Книга: C# для профессионалов. Том II

Другие свойства WebRequest и WebResponse

Другие свойства WebRequest и WebResponse

Здесь кратко будут упомянуты пара других областей, в которых WebRequest и WebResponse и связанные классы предоставляют хорошую поддержку.

Информация заголовка HTTP

Важной частью протокола HTTP является возможность послать значительную заголовочную информацию с помощью потоков запроса и ответа. Эта информация может включать данные GET и POST, cookies, а также данные определенного пользователя, посылающего запрос. Как и можно было ожидать, предоставляется полная поддержка заданию и доступу к этим данным. Однако эта поддержка не является частью классов WebRequest и WebResponse, она реализована двумя производными классами: HttpWebRequest и HttpWebResponse. Как скоро будет показано, при создании объекта WebRequest с помощью обычного механизма, если предоставленный URI был URI HTTP, то получаемая ссылка в действительности указывает на объект HttpRequest, и можно при желании преобразовать эту ссылку в такой объект. Реализация HttpRequest метода GetResponse() возвращает объект HttpWebResponse через ссылку WebResponse, поэтому снова можно выполнить простое преобразование для доступа к свойствам, специфическим для HTTP.

Подробное описание этой области представлено в документации MSDN для классов HttpWebRequest и HttpWebResponse.

Асинхронные запросы страниц

Дополнительным полезным свойством WebRequest вместо WebClient является возможность асинхронного запроса страниц. Это важно, так как в Интернете возможна достаточно длительная задержка между отправкой запроса на хост и началом получения каких-либо данных. Методы, подобные WebClient.DownloadData и WebRequest.GetResponse, не возвращают управление, пока с сервера не вернется ответ. Может оказаться нежелательным, чтобы приложение было связано с ожиданием в течение этого времени. В таком случае попробуйте воспользоваться методами BeginGetResponse() и EndGetResponse(). Они работают асинхронно. Если вызвать BeginGetResponse(), то запрос будет отправлен на хост, а метод немедленно вернет управление, предоставляя делегата типа AsyncCallback. Пока сервер отвечает на запрос, можно будет выполнять другую работу. Подробное описание этих методов можно найти в MSDN.

Оглавление книги

Оглавление статьи/книги

Генерация: 0.335. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз