После этого в программе выполняется чтение данных из веб-сайта издательства McGraw-Hill по адресуwww .McGraw-Hill. comи последующий их вывод на экран. А поскольку этих данных много, то они выводятся на экран отдельными порциями по 400 символов, после чего в программе ожидается нажатие клавиши
И наконец, ответный поток закрывается при вызове методаClose() для объектаresp.Вместе с ответным потоком автоматически закрывается и поток ввода. Ответный поток следует закрывать в промежутках между последовательными запросами. В противном случае сетевые ресурсы могут быть исчерпаны, препятствуя очередному подключению к Интернету.
И в заключение анализа рассматриваемого здесь примера следует обратить особое внимание на следующее: для отображения гипертекстового содержимого, получаемого от сервера, совсем не обязательно использовать объект типаHttpWebRequestилиHttpWebResponse.Ведь для решения этой задачи в данной программе оказалось достаточно стандартных методов, определенных в классахWebRequestиWebResponse,и не потребовалось прибегать к специальным средствам протокола HTTP. Следовательно, вызовы методовCreate() иGetResponse() можно было бы написать следующим образом.
// Сначала создать объект запроса типа WebRequest по указанному URI.
WebRequest req = WebRequest.Create("http://www.McGraw-Hill.com");
// Затем отправить сформированный запрос и получить на него ответ.
WebResponse resp = req.GetResponse() ;
В тех случаях, когда не требуется приведение к конкретному типу реализации протокола, лучше пользоваться классамиWebRequestиWebResponse,так как это дает возможность менять протокол, не оказывая никакого влияния на код программы. Но поскольку во всех примерах, приведенных в этой главе, используется протокол HTTP, то в ряде примеров демонстрируются специальные средства этого протокола из классовHttpWebRequestиHttpWebResponse.
Обработка сетевых ошибок