Проанализируем данную программу построчно. Прежде всего обратите внимание на использование в ней пространства имен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со всеми атрибутами и средствами, необходимыми для организации потока ввода. Ссылка на этот поток присваивается переменнойistrm,с помощью которой данные могут быть прочитаны из источника по указанному URI, как из обычного файла.