синхронная, так и асинхронная передача данных. В Интернете предпочтение чаще всего отдается синхронным транзакциям, поскольку ими легче пользоваться. При синхронной передаче данных пользовательская программа посылает запрос и затем ожидает ответа от сервера. Но для некоторых разновидностей высокопроизводительных приложений более подходящей оказывается асинхронная передача данных. При таком способе передачи данных пользовательская программа продолжает обработку данных, ожидая ответа на переданный запрос. Но организовать асинхронную передачу данных труднее. Кроме того, не во всех программах можно извлечь выгоды из асинхронной передачи данных. Например, когда требуется получить информацию из Интернета, то зачастую ничего другого не остается, как ожидать ее. В подобных случаях потенциал асинхронной передачи данных используется не полностью. Вследствие того что синхронный доступ к Интернету реализуется проще и намного чаще, именно он и будет рассматриваться в этой главе.

Далее речь пойдет прежде всего о классах WebRequest и WebResponse, поскольку именно они положены в основу сетевых программных средств, доступных в пространстве имен System.Net.

Класс WebReques t

Класс WebRequest управляет сетевым запросом. Он является абстрактным, поскольку в нем не реализуется конкретный протокол. Тем не менее в нем определяются те методы и свойства, которые являются общими для всех сетевых запросов. В табл. 26.1 сведены методы, определенные в классе WebRequest и поддерживающие синхронную передачу данных, а в табл. 26.2 — свойства, объявляемые в классе WebRequest. Устанавливаемые по умолчанию значения свойств задаются в производных классах. Открытые конструкторы в классе WebRequest не определены.

Для того чтобы отправить запрос по адресу URI, необходимо сначала создать объект класса, производного от класса WebRequest и реализующего требуемый протокол. С этой целью вызывается статический метод Create (), определенный в классе WebRequest. Метод Create () возвращает объект класса, наследующего от класса WebRequest и реализующего конкретный протокол.

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

Метод

Описание

public static WebRequest

Создает объект типа WebRequest для иден

Create (string

тификатора URI, указываемого в строке

requestUriString)

requestUriString. Возвращаемый объект реализует протокол, заданный префиксом идентификатора URI. Следовательно, возвращаемый объект будет экземпляром класса, призводного от класса WebRequest. Если затребованный протокол недоступен, то генерируется исключение NotSupportedException. А если недействителен указанный формат идентификатора URI, то генерируется исключение UriFormatException

Метод

Описание

public static WebRequest Create(Uri requestUri)

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; }

Получает или

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату