Программирование запросов и ответов. Класс HttpRequest.
Архитектура элементов управления сервера строится на верхнем слое более фундаментальной архитектуры обработки данных, которую можно назвать архитектурой запросов и ответов. Понимание запросов и ответов протокола передачи гипертекстовых файлов HTTP поможет нам получить целостное представление о технологии ASP.NET. Кроме того, при программировании иногда возникают такие ситуации, когда использование запросов и ответов является естественным подходом.
Пространство имен System::Web (Система Сеть) содержит полезный класс HttpRequest. Данный класс используется для считывания различных значении, которые клиент отсылает в запросе по протоколу передачи гипертекстовых фантов HTTP Эти значения, принимаемые по протоколу передачи гипертекстовых фантов HTTP, затем будут использованы классическими (те использующими общий шлюзовой ишер-фейс CGI (Common Gateway Interface)) программами или программами, использующими интерфейс прикладного программирования Internet-сервера ISAPI (Internet Server API), которые обрабатывают Web-запрос.
На этой основе строится обработка данных на более высоком уровне. В табл. 10.1 приведены некоторые наиболее часто используемые свои-ства класса HttpRequest. Если вы знакомы с протоколом передачи гипертекстовые файлов HTTP, смысл этих свойств должен быть вам понятен. Исчерпывающая инфор мация об этих и других свойствах класса HttpRequest содержится в документации по .NET Framework.
Таблица 10.1. Общедоступные свойства экземпляра класса HttpReguest.
Свойство | Смысл |
---|---|
AcceptTypes | Строковый массив принимаемых клиентом MIME-типов |
Browser (Браузер) | Информация о возможностях браузера клиента |
ContentLength | Длина (в байтах) содержимого, отосланного клиентом |
Cookies (Небольшие фрагменты данных о предыстории обращений конкретного пользователя к конкретному Web-серверу, автоматически создаваемые сервером на машине пользователя) | Коллекция небольших фрагментов данных о предыстории обращений конкретного пользователя к конкретному Web-серверу, автоматически создаваемых сервером на машине пользователя (cookies), отосланных клиентом |
Form (Форма) | Коллекция переменных формы |
Headers (Заголовки) | Коллекция заголовков для протокола передачи гипертекстовых файлов HTTP |
HttpMethod | Метод передачи по протоколу передачи гипертекстовых файлов HTTP, используемый клиентом (например, GЕТ (Получить) или POST (Отправить почтовое сообщение)) |
Params | Объединенная коллекция, которая состоит из элементов Querystnng, Form (Форма), Server-Variables и Cookies (Небольшие фрагменты данных о предыстории обращений конкретного пользователя к конкретному Web-серверу, автоматически создаваемые сервером на машине пользователя) |
Path (Путь) | Виртуальный запрос текущего пути |
OueryString | Коллекция строковых переменных запроса, посылаемого по протоколу передачи гипертекстовых файлов HTTP |
ServerVanables | Коллекция переменных Web-сервера |
Свойство Request (Запрос) класса Page (Страница) возвращает объект HttpRequest. Из свойств объекта HttpRequest можно извлечь любую необходимую информацию. Например, следующий код (этот код не содержится ни в одном примере) определяет длину (в байтах) содержимого, отосланного клиентом, и записывает поточную информацию в объект Response (Ответ). Затем эта информация отображается в окне-браузера.
Page *p = dynamic_cast<Page *>(sender); // Страница *р = dynamic_cast <Страница *> (отправитель); HttpRequest *request = p › get_Request(); int length = request › ContentLength; // длина HttpResponse *response = p › get_Response(); response › Write(String::Format(// ответ › Запись (Строка:: Формат "ContentLength = {0}<br>", _box(length))); // длина