KnigaRead.com/
KnigaRead.com » Разная литература » Прочее » Герберт Шилдт - C# 4.0 полное руководство - 2011

Герберт Шилдт - C# 4.0 полное руководство - 2011

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн "Герберт Шилдт - C# 4.0 полное руководство - 2011". Жанр: Прочее издательство неизвестно, год неизвестен.
Перейти на страницу:

public virtual Stream GetRequestStream() public virtual WebResponse GetResponse()

Создает объект типа WebRequest для идентификатора URI, указываемого с помощью параметра reques tUri. Возвращаемый объект реализует протокол, заданный префиксом идентификатора URI. Следовательно, возвращаемый объект будет экземпляром класса, призводного от класса WebRequest. Если затребованный протокол недоступен, то генерируется исключение NotSupportedException Возвращает поток вывода, связанный с запрошенным ранее идентификатором URI Отправляет предварительно сформированный запрос и джидает ответа. Получив ответ, возвращает его в виде объекта класса WebReponse. Этот объект используется затем в программе для получения информации по указанному адресу URI

Таблица 26.2. Свойства, определенные в классе WebRequest

Свойство

Описание

public AuthenticationLevel

Получает или устанавливает уровень аутентифи

AuthenticationLevel( get; set; }

кации

public virtual

Получает или устанавливает правила использо

RequestCachePolicy CachePolicy

вания кеша, определяющие момент получения

{ get; set; }

ответа из кеша

public virtual string

Получает или устанавливает имя группы подклю

ConnectionGroupName { get;

чения. Группы подключения представляют собой

set; }

способ создания ряда запросов. Они не нужны для простых транзакций в Интернете

public virtual long

Получает или устанавливает длину передаваемо

ContentLength { get; set; }

го содержимого

public virtual string

Получает или устанавливает описание переда

ContentType { get; set; }

ваемого содержимого

public virtual Icredentials

Получает или устанавливает мандат, т.е. учетные

Credentials { get; set; }

данные пользователя

public static

Получает или устанавливает правила использо

RequestCachePolicy

вания кеша по умолчанию, определяющие мо

DefaultCachePolicy { get; set; }

мент получения ответа из кеша

public static IWebProxy

Получает или устанавливает используемый по

DefaultWebProxy { get; set; }

умолчанию прокси-сервер

public virtual

Получает или устанавливает коллекцию заголовков

WebHeaderCollection Headers{

get; set; }

public TokenlmpersonationLevel

Получает или устанавливает уровень анонимно

ImpersonationLevel { get; set; }

го воплощения

Свойство

Описание

public virtual string Method { get; set; } public virtual bool PreAuthenticate { get; set; }

public virtual IWebProxy Proxy { get; set; }

public virtual Uri RequestUri { get; }

public virtual int Timeout { get; set; }

public virtual bool UseDefaultCredential { get; set; }

Получает или устанавливает протокол

Если принимает логическое значение true, то в отправляемый запрос включается информация для аутентификации. А если принимает логическое значение false, то информация для аутентификации предоставляется только по требованию адресата URI

Получает или устанавливает прокси-сервер. Применимо только в тех средах, где используется прокси-сервер

Получает идентификатор URI конкретного запроса

Получает или устанавливает количество миллисекунд, в течение которых будет ожидаться ответ на запрос. Для установки бесконечного ожидания используется значение Timeout. Infinite Получает или устанавливает значение, которое определяет, используется ли для аутентификации устанавливаемый по умолчанию мандат. Если имеет логическое значение true, то используется устанавливаемый по умолчанию мандат, т.е. учетные данные пользователя, в противном случае этот мандат не используется

Класс WebResponse

В классе WebResponse инкапсулируется ответ, получаемый по запросу. Этот класс является абстрактным. В наследующих от него классах создаются отдельные его версии, поддерживающие конкретный протокол. Объект класса WebResponse обычно получается в результате вызова метода GetResponse (), определенного в классе WebRequest. Этот объект будет экземпляром отдельного класса, производного от класса WebResponse и реализующего конкретный протокол. Методы, определенные в классе WebResponse, сведены в табл. 26.3, а свойства, объявляемые в этом классе, — в табл. 26.4. Значения этих свойств устанавливаются на основании каждого запроса в отдельности. Открытые конструкторы в классе WebResponse не определяются.

Таблица 26.3. Наиболее часто используемые методы, определенные в классе WebResponse

Метод

Описание

public virtual void Close() *

public virtual Stream GetResponseStream()

Закрывает ответный поток. Закрывает также поток ввода ответа, возвращаемый методом

GetResponseStream()

Возвращает поток ввода, связанный с запрашиваемым URI. Из этого потока могут быть введены данные из запрашиваемого URI

Свойство

Описание

public virtual long

Получает или устанавливает длину принимаемого со

ContentLength { get; set; }

держимого. Устанавливается равным -1, если данные о длине содержимого недоступны

public virtual string

Получает или устанавливает описание принимаемого

ContentType { get; set; }

содержимого

public virtual

Получает или устанавливает коллекцию заголовков,

WebHeaderCollection Headers

связанных с URI

{ get; }

public virtual bool

Принимает логическое значение true, если запрос

IsFromCache { get; }

получен из кэша. А если запрос доставлен по сети, то принимает логическое значение false

public virtual bool

Принимает логическое значение true, если клиент

IsMutuallyAuthenticated {

и сервер опознают друг друга, а иначе — принимает

get; }

логическое значение false

public virtual Uri

Получает URI, по которому был сформирован ответ.

ResponseUri { get; }

Этот идентификатор может отличаться от запрашиваемого, если ответ был переадресован по другому URI

Классы HttpWebRequest и HttpWebResponse

Оба класса, HttpWebRequest и HttpWebResponse, наследуют от классов WebRequest и WebResponse и реализуют протокол HTTP. В ходе этого процесса в обоих классах вводится ряд дополнительных свойств, предоставляющих подробные сведения о транзакции по протоколу HTTP. О некоторых из этих свойств речь пойдет далее в настоящей главе. Но для выполнения простых операций в Интернете эти дополнительные свойства, как правило, не требуются.

Первый простой пример

Доступ к Интернету организуется на основе классов WebRequest и WebResponse. Поэтому, прежде чем рассматривать этот процесс более подробно, было бы полезно обратиться к прострму примеру, демонстрирующему порядок доступа к Интернету по принципу запроса и ответа. Глядя на то, как эти классы применяются на практике, легче понять, почему они организованы именно так, а не как-то иначе.

В приведенном ниже примере программы демонстрируется простая, но весьма типичная для Интернета операция получения гипертекстового содержимого из конкретного веб-сайта. В данном случае содержимое получается из веб-сайта издательства McGraw-Hill по адресу www. McGraw-Hill. com, но вместо него можно подставить адрес любого другого веб-сайта. В этой программе гипертекстовое содержимое выводится на экран монитора отдельными порциями по 400 символов, чтобы полученную информацию можно было просматривать, не прибегая к прокрутке экрана.

// Пример доступа к веб-сайту.

using System.Net; using System.10;

class NetDemo {

static void Main() { int ch;

// Сначала создать объект запроса типа WebRequest по указанному URI. HttpWebRequest req = (HttpWebRequest)

WebRequest.Create("http://www.McGraw-Hill.com");

// Затем отправить сформированный запрос и получить на него ответ. HttpWebResponse resp = (HttpWebResponse) req.GetResponse();

// Получить из ответа поток ввода.

Stream istrm = resp.GetResponseStream();

/* А теперь прочитать и отобразить гипертекстовое содержимое,

полученное по указанному URI. Это содержимое выводится на экран отдельными порциями по 400 символов. После каждой такой порции следует нажать клавишу <ENTER>, чтобы вывести на экран следующую порцию из 400 символов. */ for (int i=l; ; i++) { ch = istrm.ReadByte(); if(ch == -1) break;

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*