Г. Шилдт - С#4.0 Полное руководство (1160795), страница 207
Текст из файла (страница 207)
Тем не менее в нем определяются те методы и свойства, которые являются общими для всех сетевых запросов. В табл. 26.1 сведены методы, определенные в классе иеькес(се ос и поддерживающие синхронную передачу данных, а в табл. 26.2 — свойства, объявляемые в классе иеЬкес(иезг. Устанавливаемые по умолчанию значения свойств задаются в производных классах. Открытые конструкторы в классе иеькес)иезг не определены. Для того чтобы отправить запрос по адресу 1(К!, необходимо сначала создать объект класса, производного от класса ИеЬКес(иезг и реализующего требуемый протокол. С этой целью вызывается статический метод Сгеасе ( ), определенный в классе иеькес)иезс. Метод сгеаге () возвращает объект класса, наследующего от класса иеькес(иезс и реализующего конкретный протокол.
Таблица 26 1. Методы, определенные в классе ИеЬКесТоев Ь Метод Описание рибддс зсас1с ИеЬКес(иезг Сгеаге(зсгдпд седиезгйсуЯгс1пд) Создает объект типа иеькес(иезс для идентификатора ОЙ1, указываемого в строке гедиезсдгзесхупд. Возвращаемый объект реализует протокол, заданный префиксом идентификатора ОК(. Следовательно, возвращаемый объект будет экземпляром класса, призводного от класса иеЬКес(иезг.
Если затребованный протокол недоступен, то генерируется исключение иогяирроггег)ехсерсдоп. А если недействителен указанный формат идентификатора ОК1, то генерируется исключение ()гз ЕогглагЕхсерсдоп В пространстве имен еузгегл. нес поддерживается как синхронная, так и асинхронная передача данных. В Интернете предпочтение чаще всего отдается синхронным транзакциям, поскольку ими легче пользоваться. При синхронной передаче данных пользовательская программа посылает запрос и затем ожидает ответа от сервера. Но для некоторых разновидностей высокопроизводительных приложений более подходящей оказывается асинхронная передача данных. При таком способе передачи данных пользовательская программа продолжает обработку данных, ожидая ответа на переданный запрос. Но организовать асинхронную передачу данных труднее.
Кроме того, не во всех программах можно извлечь выгоды из асинхронной передачи данных. Например, когда требуется получить информацию из Интернета, то зачастую ничего другого не остается, как ожидать ее. В подобных случаях потенциал асинхронной передачи данных используется не полностью. Вследствие того что синхронный доступ к Интернету реализуется проще и намного чаще, именно он и будет рассматриваться в этой главе. Далее речь пойдет прежде всего о классах ИеЬКег)иеаг и ИеЬКезропае, поскольку именно они положены в основу сетевых программных средств, доступных в пространстве имен Бузгегл.
Нег. Т 016 Часть )!. библиотека С(г Окончание гнабл. 2б.1 Метод Описание Создает объект типа иеЬНедпеяГ для идентификатора Ой(, указываемого с помощью параметра гедиеягигу. Возвращаемый объект реализует протокол, заданный префиксом идентификатора Ой!. Следовательно, возвращаемый объект будет экземпляром класса, призводного от класса ИеЬНедиеяГ. Если затребованный протокол недоступен, то генерируется исключение ИоГЯпррогяег(Ехсерс1оп Возвращает поток вывода, связанный с запрошенным ранее идентификатором ОН! Отправляет предварительно сформированный запрос и Чжидает ответа.
Получив ответ, возвращает его в виде объекта класса иеЬНеропяе. Этот объект используется затем в программе для получения информации по указанному адресу ОН! Таблица 26.2. Свойства, определенные в классе ИеЬВегТцевп Свойство Описание НедпеяГСаспеРо11су СаспеРо11су рпЬ11с Тохеп1глрегяопас1оп1ече1 1врегяопасгопЬече1 ( дег! яеГ! рпЫус ясасус ИеЬНедиеяс Сгеясе (Яг1 гедиеяя((гп) рпЬ11с чяггпа1 Яггеат ЯесяедпеяГЯГгеагл() рпЫ1с чугспа1 ИеЬНеяропяе ЯеГНеяропяе О риЫТс Аиспепс1сас1опЬече1 Апгьепгясагуоп1ече1( дег; яег; рпЫТс чягтса1 ( дег; яег! ) рпЬ11с чуггпа1 яггбпд Соппессдопдгосрнагле ( дес! яег; ) рпЫ1с чдгспа1 1опд СопсепГЬепдГЬ ( дес; вест роЫТс ч1ггпа1 яггупд СопсепГТуре ( деГ! яеГ! ) рпЫТс чугспа1 1сгег(епс1а1я Сгес(епГ1а1я ( дес! яес; ) риЫТс ягагпс НедпеяГСаспеРо11су ре1ап1ГСасперо11су ( дес; яест рпЬ11с ясасус 1ИеЬРгоху ()е1ап1ГИеЬРгоху ( деят яес; ) риЫТс чугсиа1 ИеЬНеаг(егСо11есс1оп Неаг(егя( дег.т яегг ) Получает или устанавливает уровень аутентифи- кации Получает или устанавливает правила использо- вания кеша, определяющие момент получения ответа из кеша Получает или устанавливает имя группы подклю- чения.
Группы подключения представляют собой способ создания ряда запросов. Они не нужны для простых транзакций в Интернете Получает или устанавливает длину передаваемо- го содержимого Получает или устанавливает описание переда- ваемого содержимого Получает или устанавливает мандат, т.е. учетные данные пользователя Получает или устанавливает правила использо- вания кеша по умолчанию, определяющие мо- мент получения ответа из кеша Получает или устанавливает используемый по умолчанию прокси-сервер Получает или устанавливает коллекцию заголовков Получает или устанавливает уровень анонимно- го воплощения Глава 26. Сетевые средства подключения к Интернету 1017 Окончание табл. 26.2 Свойство Описание рпЫТс чггтоа1 ясг1пу Ыеспог) ( арест яегг ) роЬ11с ч1гтва1 Ьоо1 Ргедпгпепсгсасе ( цесг яес; ) Получает или устанавливает протокол Если принимает логическое значение ггпе, то в отправляемый запрос включается информация для аутентификации.
А если принимает логическое значение Га1яе, то информация для аутентификации предоставляется только по требованию адресата ()В) Получает или устанавливает прокси-сервер. Применимо только в тех средах, где используется прокси-сервер Получает идентификатор () В) конкретного запроса роЬ11с чдгГоа1 1иеЬРгоху Ргоху ( г1ес; Яес; ) рпЫТс ч1ггаа1 ()г1 йег)пеяг()г1 (лещ ) риЫ1с чдгсиа1 1пс Т1гпеопс ( пегг яегг ) Получает или устанавливает количество миллисекунд, в течение которых будет ожидаться ответ на запрос. Для установки бесконечного ожидания используется значение т1глеопг. 1п((пдге Получает или устанавливает значение, которое определяет, используется ли для аутентификации устанавливаемый по умолчанию мандат. Если имеет логическое значение ггпе, то используется устанавливаемый по умолчанию мандат, т.е.
учетные данные пользователя, в противном случае этот мандат не использ ется рпЬ11с чдгспа1 Ьоо1 Уяепегаы1ГСгег(епс1а1 ( пес; яегг ) Класса(еЬйевропве Таблица 26.3. Наиболее часто используемые методы, определенные в классе ИеЬВевропяе Метод Описание рпЫТс чдггоа1 чо1с( С1ояе () Закрывает ответный поток. Закрывает также поток авода ответа, возвращаемый методом Беспеяропяеэсгеат() Возвращает поток ввода, связанный с запрашивае- мым ()В). Из этого потока могут быть введены дан- ные из запрашиваемого ()Я( риЬ11с ч1ггва1 Бсгеав Беспеяропяеэггеаи() В классе НеЬйеяропяе инкапсулируется ответ, получаемый по запросу.
Этот класс является абстрактным. В наследующих от него классах создаются отдельные его версии, поддерживающие конкретный протокол. Объект класса неЬйеяропяе обычно получается в результате вызова метода Бегкеяропяе (), определенного в классе неьйес(пеяг. Этот объект будет экземпляром отдельного класса, производного от класса НеЬйе ярос яе и Реализующего конкретный протокол. Методы, определенные в классе НеЬНеяропяе, сведены в табл. 26.3, а свойства, объявляемые в этом классе,— в табл.
26.4. Значения этих свойств устанавливаются на основании каждого запроса в отдельности. Открытые конструкторы в классе неьнеяропяе не определяются. 1018 Часть )!. Библиотека С№ Таблица 26.4. Свойства, определенные в классе ИеЬКевропве Свойство Описание риЬ11с ч1ггца1 1опо СопгепСЬепоСЬ ! оегт вегт ) рпЫ№с ч1гспа1 Ьоо1 1янпгпа11удптпепг1сагес) ! пес; рпЬ11с ч1ггпа1 Сдд Кеяропяебсй ! оег; ) Кдассы НССртгтеЬНесузез С и НссртгтеЬНезрогтзе Оба класса, нссрнеькес)пеяс и нссрнеькеяропяе, наследуют от классов НеЬКеооеят и НеЬКеяропяе и реализуют протокол НТТР.
В ходе этого процесса в обоих классах вводится ряд дополнительных свойств, предоставляющих подробные сведения о транзакции по протоколу НТТР. О некоторых из этих свойств речь пойдет далее в настоящей главе. Но для выполнения простых операций в Интернете эти дополнительные свойства, как правило, не требуются.
Первый простой пример Доступ к Интернету организуется на основе классов ХеЬКес)неят и НеЬКеяропяе. Поэтому, прежде чем рассматривать этот процесс более подробно, было бы полезно обратиться к прострму примеру, демонстрирующему порядок доступа к Интернету по принципу запроса и ответа. Глядя на то, как эти классы применяются на практике, легче понять, почему они организованы именно так, а не как-то иначе. В приведенном ниже примере программы демонстрируется простая, но весьма типичная для Интернета операция получения гипертекстового содержимого из конкретного веб-сайта. В данном случае содержимое получается из веб-сайта издательства МсСгатч-Н!)! по адресу ннн.
Нссган-Н111. соль но вместо него можно подставить адрес любого другого веб-сайта. В этой программе гипертекстовое содержимое выводится на экран монитора отдельными порциями по 400 символов, чтобы полученную информацию можно было просматривать, не прибегая к прокрутке экрана. О Пример доступа к ввб-сайту. пя1по яуятеит рпЫ1с чаг иа1 ясг1по Соптепттуре ! оебт яегт ) рпЫ№с чйгтпа1 НеЬНеас)егСо11есС1оп Неаг)еся ! цест рпЫ1с ч1сспа1 Ьоо1 1яргопСасне ! Оегт Получает или устанавливает длину принимаемого со- держимого. Устанавливается равным -1, если дан- ные о длине содержимого недоступны Получает или устанавливает описание принимаемого содержимого Получает или устанавливает коллекцию заголовков, связанных с НЯ! Принимает логическое значение с где, если запрос получен из каша. А если запрос доставлен пд сети, то принимает логическое значение Га1яе Принимает логическое значение сгпе, если клиент и сервер опознают дРуг яру~а, а иначе — принимает логическое значение га1ее Получает НЯ), по которому был сформирован ответ.
Этот идентификатор может отличаться от запрашивае- мого, если ответ был переадресован по другому НН! Глава 26. Сетевые средства подключения к Интернету 1019 ця1пч Зуягеш.нег; цятпо Зуятеш.10; с1аяя Хегоешо ятаС1с чо1б Мвтп () Тпт стп // Сначала создать объект запроса типа Хеоаеяоеяг по указанному ПН1. Нттрнеокеццеят геЧ = (НССРХеЬНесв|еяС) ХеЬНе<гзеяС.Сгеате("ЬССР://ннн.мсоган-Н111.сош")) Затем отправить сформированный запрос и получить на него ответ.