// Затем отправить сформированный запрос и получить на него ответ. HttpWebResponse resp = (HttpWebResponse) req.GetResponse();
// Получить из ответа поток ввода.
Stream istrm = resp.GetResponseStream();
/* А теперь прочитать и отобразить гипертекстовое содержимое,
полученное по указанному URI. Это содержимое выводится на экран отдельными порциями по 400 символов. После каждой такой порции следует нажать клавишу <ENTER>, чтобы вывести на экран следующую порцию из 400 символов. */ for (int i=l; ; i++) { ch = istrm.ReadByte(); if(ch == -1) break;
Console.Write ( (char) ch); if((i % 4 0 0)==0) {
Console.Write ('ХпНажмите клавишу <Enter>.');
Console.ReadLine();
}
}
// Закрыть ответный поток. При этом закрывается также поток ввода istrm. resp.Close(); •
}
}
Ниже приведена первая часть получаемого результата. (Разумеется, это содержимое может со временем измениться в связи с обновлением запрашиваемого веб-сайта, и поэтому у вас оно может оказаться несколько иным.)
<html>
<head>
<title>Home - The McGraw-Hill Companies</title>
<meta name='keywords' content='McGraw-Hill Companies,McGraw-Hill, McGraw Hill, Aviation Week, BusinessWeek, Standard and Poor's, Standard & Poor1s,CTB/McGraw- Hill,Glencoe/McGraw-Hill, The Grow Network/McGraw-Hill,Macmillan/McGraw-Hill, McGraw-Hill Contemporary,McGraw-Hill Digital Learning,McGraw-Hill Professional Development,SRA/McGraw
Нажмите клавишу <Enter>.
-Hill,Wright «Group/McGraw-Hill,McGraw-Hill Higher Education,McGraw-Hill/Irwin, McGraw-Hill/Primis Custom Publishing,McGraw-Hill/Ryerson,Tata/McGraw-Hill,
McGraw-Hill Interamericana,Open University Press, Healthcare Information Group, Platts, McGraw-Hill Construction, Information & Media Services' />
<meta name='description' content='The McGraw-Hill Companies Corporate Website.' /> <meta http-equiv
Нажмите клавишу <Enter>. 1
Итак, выше приведена часть гипертекстового содержимого, полученного из вебсайта издательства McGraw-Hill по адресу www.McGraw-Hill. com. В рассматриваемом здесь примере программы это содержимое просто выводится в исходном виде на экран посимвольно и не форматируется в удобочитаемом виде, как это обычно делается в окне браузера.
Проанализируем данную программу построчно. Прежде всего обратите внимание на использование в ней пространства имен System. Net. Как пояснялось ранее, в этом пространстве имен находятся классы сетевого подключения к Интернету. Обратите также внимание на то, что в данную программу включено пространство имен System. 10, которое требуется для того, чтобы прочитать полученную на веб-сайте информацию, используя объект типа Stream.
В начале программы создается объект типа WebRequest, содержащий требуемый URL Как видите, для этой цели используется метод Create (), а не конструктор. Это статический член класса WebRequest. Несмотря на то что класс WebRequest является абстрактным, это обстоятельство не мешает вызывать статический метод данного класса. Метод Create () возвращает объект типа HttpWebRequest. Разумеется, его значение требуется привести к типу HttpWebRequest, прежде чем присвоить его переменной req ссылки на объект типа HttpWebRequest. На этом формирование запроса завершается, но его еще нужно отправить по указанному URL
Для того чтобы отправить запрос, в рассматриваемой здесь программе вызывается метод GetResponse () для объекта типа WebRequest. Отправив запрос, метод GetResponse () переходит в состояние ожидания ответа. Как только ответ будет получен, метод GetResponse () возвратит объект типа WebResponse, в котором инкапсулирован ответ. Этот объект присваивается переменной resp. Но в данном случае ответ принимается по протоколу HTTP, и поэтому полученный результат приводится к типу HttpWebResponse. Среди прочего в ответе содержится поток, предназначаемый для чтения данных из источника по указанному URL
Далее поток ввода получается в результате вызова метода GetResponseStream () для объекта resp. Это стандартный объект класса Stream со всеми атрибутами и средствами,