Читать «C# 4.0: полное руководство» онлайн - страница 655
Герберт Шилдт
<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>.
Итак, выше приведена часть гипертекстового содержимого, полученного из вебсайта издательства McGraw-Hill по адресу www.McGraw-Hill. com. В рассматриваемом здесь примере программы это содержимое просто выводится в исходном виде на экран посимвольно и не форматируется в удобочитаемом виде, как это обычно делается в окне браузера.
Проанализируем данную программу построчно. Прежде всего обратите внимание на использование в ней пространства имен System.Net
. Как пояснялось ранее, в этом пространстве имен находятся классы сетевого подключения к Интернету. Обратите также внимание на то, что в данную программу включено пространство имен System.IO
, которое требуется для того, чтобы прочитать полученную на веб-сайте информацию, используя объект типа Stream
.
В начале программы создается объект типа WebRequest
, содержащий требуемый URL Как видите, для этой цели используется метод Create()
, а не конструктор. Это статический член класса WebRequest
. Несмотря на то что класс WebRequest
является абстрактным, это обстоятельство не мешает вызывать статический метод данного класса. Метод Create()
возвращает объект типа HttpWebRequest
. Разумеется, его значение требуется привести к типу HttpWebRequest
, прежде чем присвоить его переменной req ссылки на объект типа HttpWebRequest
. На этом формирование запроса завершается, но его еще нужно отправить по указанному URL
Для того чтобы отправить запрос, в рассматриваемой здесь программе вызывается метод GetResponse()
для объекта типа WebRequest
. Отправив запрос, метод GetResponse()
переходит в состояние ожидания ответа. Как только ответ будет получен, метод GetResponse()
возвратит объект типа WebResponse
, в котором инкапсулирован ответ. Этот объект присваивается переменной resp
. Но в данном случае ответ принимается по протоколу HTTP, и поэтому полученный результат приводится к типу HttpWebResponse
. Среди прочего в ответе содержится поток, предназначаемый для чтения данных из источника по указанному URL
Далее поток ввода получается в результате вызова метода GetResponseStream()
для объекта resp
. Это стандартный объект класса Stream
со всеми атрибутами и средствами, необходимыми для организации потока ввода. Ссылка на этот поток присваивается переменной istrm
, с помощью которой данные могут быть прочитаны из источника по указанному URI, как из обычного файла.