Иллюстрированный самоучитель по Architecture .NET

Программирование запросов и ответов. Класс HttpRequest.

Коллекции

Многие полезные коллекции представлены как свойства объекта HttpRequest. Эти коллекции принадлежат типу NamedValueCollection (в пространстве имен System::Collections::Specialized (Система::Коллекции::Специализированное пространство имен)). Получить значение переменной из коллекции можно при помощи строкового ключа. Например, следующий код извлекает из коллекции ServerVanables значение переменных сервера QUERY_STRING и HTTP_USER_AGENT.

Page *p = dynamic_cast<Page *>(sender);
// Страница *р = dynamic_cast <Страница *> (отправитель);
HttpRequest *request = p › get_Request();
HttpResponse *response = p › get_Response();
String *strQuery = // Строка
request › ServerVariables › get_Item(// запрос
"QUERY_STRING");
response › Write(String::Format(// ответ › Запись (Строка:: Формат (
"QUERY_STRING = {0}<br>",strQuery));
String *strAgent = // Строка
request › ServerVariables › get_Item(// запрос
"HTTP_USER_AGENT");
response › Write(String::Format(// ответ › Запись (
Строка:: Формат ("HTTP_USER_AGENT = {0}<br>",
strAgent));

Если вслед за унифицированным указателем информационного ресурса (URL) соответствующего.aspx-файла ввести строку запроса ?foo=3, приведенный выше код отобразит в окне браузера что-то примерно следующее:

QUERY_STRING = foo=3
HTTP_USER_AGENT = Mozilla/4.0

Подобные переменные при программировании классического (т.е основанного на общем шлюзовом интерфейсе CGI (Common Gateway Interface)) Web-сервера играют решающую роль. Используя переменные среды, Web-сервер передает информацию CGI-скрипту или программе. На всякий случай ASP.NET обеспечивает доступ и к этой низкоуровневой информации.

Стандартная задача состоит в том, чтобы извлечь информацию из элементов управления формы. В HTML-коде элементы управления идентифицируются атрибутом name (имя). Этот атрибут сервер использует для определения соответствующего значения. Способ передачи данных из формы серверу зависит от того, какой метод использует форма в протоколе передачи гипертекстовых файлов HTTP: GET (Получить) или POST (Отправить почтовое сообщение).

Если используется метод GET (Получить), данные, введенные в форму, кодируются как часть строки запроса. Чтобы затем извлечь нужные значения, используется коллекция QueryString. Если же используется метод POST (Отправить почтовое сообщение), данные, введенные в форму, передаются как содержимое после заголовка протокола передачи гипертекстовых файлов HTTP. В этом случае для извлечения значения элементов управления используется коллекция Forms (Формы). Чтобы узнать, какую коллекцию следует использовать, нужно определить значение (GET (Получить) или POST (Отправить почтовое сообщение)) переменной сервера REQUEST_METHOD. (Если переменная REQUEST_METHOD имеет значение GET (Получить), используется коллекция QueryString. Если же ее значение равно POST (Отправить почтовое сообщение), используется коллекция Forms (Формы)).

Если вы используете ASP NET, тогда вам не стоит волноваться о том, какой метод протокола передачи гипертекстовых файлов HTTP использовался при запросе В ASP.NET имеется коллекция Params, которая представляет собой объединение (в математическом смысле) коллекций ServerVariables, QueryString, Forms (Формы) и Cookies (Небольшие фрагменты данных о предыстории обращений конкретного пользователя к конкретному Web-серверу, автоматически создаваемые сервером на машине пользователя).

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.