Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 185
Текст из файла (страница 185)
Для того чтобы отправить запрос по адресу Г)И, необходимо сначала создать объект класса, производного от класса иеьнес(иевс и реализующего требуемый протокол. с этой целью вызывается статический метод Сгеаке (), определЕнный в классе Иеьнег(иевь. Метод СгеаСе О возвращает объект класса, наследующего от класса Иеьнес(иев С и реализующего конкретный протокол. 920 Часть П. Библиотека СЭ Таблица 25.2. Свойства, определенныевклассеууеЬВег1оевс Свойство роЬ1гс АскьепкгсаГ1оп1ече1 Аикпепк1сак1опьече1( дек; яек; ) рчЫ1с чггсца1 Недаеяссвспвро11су СасЬеро11су ( деки яек; ) риЫгс ч1гсов1 всггпд СоппесГ1опдгоарнаие ( деГ) вес; ) роЫ1с чггкиа1 1опд Сопквпк(,впдГЬ ( дег; вег; ) рагс чггкоа1 вкг1пд СопсепГТуре ( дег; яег; ) раЫгс ч1гкоа1 1сгеаепкга1я сгеаепг1а1в ( дег; яегг роЫгс вкакгс Ведоевссасьеро11су Оегао1гсасьеро11су ( дегг яегг ) роЫгс вкас1с 1ИеЬРгаху Оегаи1ГИеЬРгоху ( дек; век: раЫ1с ч1гкоа1 ИеЬНеаг(егсо11есГ1оп Неаоегв( дес; вес( риЫ1с Тохеп1нрегяопакгопьече1 1арегяопак1опьече1 ( дегг яегг ) роЫ1с ч1гкаа1 якг1пд Мекпог( ( дег.г ввг; ) раЫ1с чггсиа1 Ьоо1 РгеАикьепГ1саке ( декг вес; ) раЫ1с чггсиа1 Тнвьргаху Ргоху ( дегг веги ) риЫгс ч1гсив1 Огг Недоевкаг1 ( дегг ) раЫгс чггсав1 гпк Т1веоис ( дегг ввгг ) рчЫгс чггкив1 Ьоо1 Ояеаетаа1гсгег(епг1а1 ( двгг вег; Описание Получает или устанавливает уровень аутентификации Получает или устанавливает правила использгеания каша, определяющие момент получения ответа из каша Получает или устанавливает групповое имя подключения.
Группы подключения представляют собой способ создания ряда запросов. Они не нужны дпя простых транзакций в Интернете Получает или устанавливает длину передаваемого со- держимого Получает или устанавливает описание передаваемого содержимого Получает или устанавливает мандат, т.е. учетные данные пользователя Получает или устанавливает правила использования каша по умолчанию, определяющие момент получения ответа из каша Палуюет или устанавливает используемый по умолча- нию прокоп-сервер Пол)чает или устанавливает коллекцию заголовков Получает или устанавливает уровень олицетворения Получает или устанавливает протокол Если имеет логическое значение ггае, то в отправляемый запрос включается информация дпя аутентификации.
А если имеет лопвческое значение Та1вв, то информация для аутентификации предоставляется только по требованию адресата ОП( Получает или устанавливает прокоп-сервер. Применимо только в тех средах, ще используется прокси-сервер Получает идентификатор Ой( конкретного запроса Получает или устанавливает количество миллисекунд, в течение которых булат ожидэться ответ на запрос. Для установки бесконечного ожидания используется значение т1яюоиг. 1пкгпг ге Получает или устанавливает значение, которое определяет, используется ли для аушнтификации устанавливаемый по умолчанию мандат.
Если имеет лопмеское значение г. гав, то используется устанавливаемый по умолчанию мандат, те, учетные данные пользователя, в противном случае этот мандат не используется Глава 25. Сетевые средства подключения к Интернету 921 КЛаСС ТлТеЪВезрот1зе Таблица 2б.3. Наиболее употребительные методы, определенные в классе ИеЬйевропве Описание Метод роЬ11с ч1гкпа1 чо1П С1ояе() Закрывает ответный поток. Закрывает также поток ввода ответа, возвращаемый методом сегаеяропяеяггеав() роЫгс чггкиа1 Бкгеав пегаеяропяеяггеав 0 Возвращает поток ввода, связанный с запрашивае- мым 0й!.
Из этого потока могут быть введены дан- ные из запрашиваемого 0й! Таблица26.4. Свойства, определенные вклассеиеЬйевропяе Свойство Описание РпЫ1с чьгсчв1 1опя СопкепкъепЧГЬ Получаетилиустанаалиааетдлинупринимаемогосо( дегг вегг ) держимого. Устанавливается равным -1, если данные о длине содержимого недоступны рцЬ1гс ч1гсоа1 якггпЧ Сопсепктуре ( чегг яегг ) Получает или устанавливает описание принимаемого содержимого ! Получает или устанавливает коллекцию заголовков, связанных с 0й! роЫгс ч1гкоа1 Иеьнеабегсо11есс1оп Неаяегя ( дегг ) роЫьс чьгсиа1 Ьоо1 1ятговСасЬе ( чегг ) Имеет логическое значение ггце, если запрос по- лучен из каша.
А если запрос доставлен по сети, то имеет логическое значение га1яе риЫ1с ч1ггиа1 Ьоо1 Имеет логическое значение ггце, если клиент и сергвиигца11улигьепг1сагег) ( пег) ) вер опознают друг друга, а противном случае — имеет логическое значение Га1яе роЫ1с чггкиа1 Пгг аеяропвецг1 ( чег; ! Получает 0й), по которому был сформирован ответ. Этот идентификатор может отличаться от эапрашивае- мего, если ответ был переадресован по другому 0й! Классы нссртлтеънесулезс и нсср9теънезропзе Оба класса, нггриеЬйег(се як и НГГриеЬйдяропя е, наследуют от классов ИеЬйег(се як и ИеЬйеяропяе и реализуют протокол НТТР.
В ходе этого процесса в обоих классах вводится несколько дополнительных свойств, предоставляющих дополнительные сведения В классе ИеЬйеяропяе иикапсулируется ответ, получаемый по запросу. Этот класс является абстрактным. В наследующих от него классах создаются отдельные его версии, поддерживающие конкретный протокол. Объект класса иеьйеяропяе обычно получается в результате вызова метода петйеяропяе (), определенного в классе иеьйег(цеяг. Этот объект будет экземпляром отдельного класса, производного от класса иеЬйеяропяе и реализующего конкретный протокол.
Методы, определенна)е в классе ИеЬйеяропяе, сведены в табл. 25.3, а свойства, объявляемые в этом классе, — в табл. 25А. Значения этих свойств устанавливаются иа основании каждого запроса в отдельности. Открытые конструкторы в классе ИеЬйеяропяе ие определяются. 922 часть и. Библиотека 0№ о транзакции по протоколу НТТР. О некоторых из этих свойств речь пойдет далее в настоящей главе. Но для выполнения простых операций в Интернете эти дополнительные свойства, как правило, не требуются. Первый простой пример Доступ к Интернету организуется на основе классов иеЬНедцеяС и ИеЬНеяропяе. Поэтому, прежде чем рассматривать этот процесс более подробно, было бы полезно обратиться к простому примеру, демонстрирующему порядок доступа к Интернету по принципу запроса и ответа. Глядя на то, как эти классы применяются на практике, легче понять, почему они организованы именно так, а не как-то иначе.
В приведенном ниже примере программы демонстрируется простая, но весьма типичная для Интернета операция получения гипертекстового содержимого из конкретного веб-сайта. В данном случае содержимое получается из веб-сайта издательства МсбгазчН(11 по адресу ини. Мсдгаи-Н111.' соп, но вместо него можете подставить адрес любого другого веб-сайта. В этой программе гипертекстовое содержимое выводится на экран монитора отдельными порциями по 400 символов, чтобы полученную информацию можно было просматривать, не прибегая к прокрутке экрана. // Пример доступа к веб-сайту. цязпд 5уякепз цязпд Яуясеп.Мест ця1пд Яуяпеп.104 с1аяя Иекпепо ( якаС1с чозб Мазп() ( зпС сп; // Сначала создать объект запроса типа ИеЬкедцеяС по укаэанному ПН1.
нссриеьнедцеяс гед = (нссриеьнечцеяс) ИеЬНедцеяС.Сгеаке("ЬССр://ннн.мсдгаи-Нз11.соп")т // Затем отправить сформированный запрос и получить на него ответ. НССрнеЬНеяропяе геяр (НССрнеЬНеяропяе) гед.Пескеяропяе()з // Получить из ответа поток ввода. 5Ссеап зяксп = сеяр.беккеяропаеЯСгеап() /* А теперь прочитать и отобразить гипертекстовое содержимое, полученное по указанному ПН1. Зто содержимое выводится на экран отдельными порциями по 400 символов.
После каждой такой порции следует нажать клавишу <ЕИТЕН>, чтобы вывести на экран следующую порцию из 400 символов. */ Гог(зпк >=14 ; зт+) ( сь = зясгп.кеабвусе()з 11(сп == -1) Ьгеасз сопяо1е.иг1се((сьаг) сь)' 1Г((14400)==0) ( Сопяо1е.нс1Се("1пнажмите клавишу <Епкес>."]; Глава 25. Сетевые средства подключения к Интернету 923 Сопво1е.аеаот Тле () т // Закрыть ответный поток. При этом закрывается // также поток ввода 1вггш. гевр. С1ове () т ) ) Ниже приведена первая часть получаемого результата. (Разумеется, это содержимое может со временем измениться в связи с обновлением запрашиваемого веб-сайта, и поэтому у вас оно может оказаться несколько иным.) <Ькш1> <Ьеао> <Г1Г1е>ноше — ТЬе Мспгаи-Н111 Сошрап1ев</Ггв1е> <шепа паше="Кеуыогов" сопгепс="Мсбган-НШ Сошрапгев,Мспгаи-Н111, Мспгаи НТШ, лчгаггоп неек, Вив1пеяянеек, Бсапсагс апн Роог'я, Бгапт(агс а Роог'в,ств/ МссЬ25.