Архитектура Microsoft Windows для разработчиков



Занятие 3. Чтение HTTP-запроса

(Продолжительность занятия 15 минут)

Когда пользователь пытается получить данные с Web-страницы, запрос передается серверу в формате HTTP. Приложения ASP применяют для обработки HTTP-запроса и извлечения необходимых данных объект Request. Например, если пользователь отправляет заполненную форму, значения элементов управления формы (например, значения текстовых полей) передаются серверу в теле HTTP-запроса. Web-приложение средствами объекта Request может извлечь эти данные и, обработав их, возвратить пользователю персонализированную Web-страницу.

На этом занятии описано, как применять объект Request для извлечения информации из Web-страниц.

 
Изучив материал этого занятия, Вы сможете:

  • описать пять наборов объекта Request, предназначенных для извлечения информации из HTTP-запроса;
  • использовать набор QueryString объекта Request для получения информации из заголовка HTTP-запроса;
  • использовать набор Form объекта Request для получения информации из тела HTTP-запроса.

Объект Request

Объект Request обеспечивает доступ ко всей информации, содержащейся в HTTP-запросе.

Наборы объекта Request

Объект Request содержит пять наборов, предназначенных для извлечения информации из HTTP-запроса.

Набор

Описание

QueryString

Значения переменных в строке запроса HTTP, в частности значения, следующие за знаком вопроса (?) в HTTP-запросе

Form

Значения элементов форм, размещенных в теле HTTP-запроса методом Post формы

Cookies

Значения агентов HTTP-запроса

ClientCertificate

Значения полей сертификата HTTP-запроса

ServerVariables

Значения предопределенных переменных среды Web-сервера

 

Использование объекта Request

Каждый набор объекта Request содержит переменные, которые Вы можете использовать для извлечения информации из HTTP-запроса.

 
Примечание Полный список предопределенных переменных среды приведен в документе Active Server Page Roadmap, который устанавливается вместе с AS Р.

 
Пример Здесь переменная SERVER_NAME набора ServerVariables используется для получения имени Web-сервера:

Request.ServerVariables("SERVER_NAME")

Значения этих переменных помогут Вам создать динамические HTML-страницы для пользователей Вашего приложения.


 


Пример Здесь имя Web-сервера используется для создания гиперссылки на расположенную на нем Web-страницу:

<А HREF="http://<%= Request.ServerVariables("SERVER_NAME")%>

/MyPage.asp">Link to MyPage</A>


К переменным можно обращаться и напрямую, не указывая имя набора.

 


Пример Вот пример непосредственного обращения к серверной переменной:

Request("SERVER_NAME")


Если Вы обращаетесь к переменной напрямую, Web-сервер просматривает в ее поисках наборы в следующем порядке:

  • QueryString;
  • Form;
  • Cookies;
  • ClientCertificate;
  • ServerVariables.

Если несколько наборов содержат переменные с одинаковым именем, используется первый из них.

Набор QueryString

Набор QueryString объекта Request предназначен для извлечения информации из заголовка HTTP-запроса.

Когда пользователь отправляет заполненную форму или добавляет параметры к URL-запросу, Вы можете средствами набора QueryString получить переданную информацию.

Из запроса считываются параметры, стоящие после знака вопроса (рис. 10.2).

10-6.jpg

Рис. 10.2 HTTP-запрос, содержащий передаваемую информацию

 
Примечание Набор QueryString — это синтаксически разобранная версия переменной QUERY_STRING набора ServerVariables. Набор QueryString позволяет Вам обращаться к параметрам QUERY STRING по именам.

Чтобы извлечь всю информацию, переданную пользователем, просмотрите в цикле все значения, содержащиеся в строке запроса.

 
Пример Этот пример выполняет цикл считывания значений из HTTP-запроса:

<%For Each Item In Request.QueryString

'Отображение элемента

Next %>


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

 
Пример Здесь показано, как получить доступ к первому и второму значениям переменной «sport» в наборе QueryString:

Request,QueryString("sport")(0)

Request.QueryString("sport")(1)


Набор Form

Набор Form объекта Request извлекает информацию из тела HTTP-запроса.

 
Примечание Если форма использует метод GET, в набор QueryString будет включена вся информация, переданная в форме.

Набор Form содержит значения каждого стандартного элемента управления HTML, у которого есть атрибут NAME. Когда пользователь отправляет заполненную форму методом Post, средствами набора Form можно считать введенные им значения.

 
Пример Пусть пользователь заполняет и отправляет такую HTML-форму:

<FORM ACTION="submit.asp" METHOD=POST> Name: <INPUT TYPE=TEXT NAME="name"xP> Favorite Color: <SELECT MULTIPLE NAME="color">

<OPTION>Red

<OPTION>Green

<OPTION>Blue

</SELECT><P>

<INPUT TYPE=SUBMIT NAME="cmdSubmit" VALUE="Submit">

</FORM>


Чтобы извлечь переданную информацию, воспользуйтесь следующим сценарием в файле submit.asp:

Request.Form("name")

Request.Form("color")

Кроме того, Вы можете считать переданную пользователем информацию в цикле по всем элементам формы.

 
Пример Здесь выполняется цикл по всем стандартным элементам управления HTML в HTTP-запросе:

<% For Each Item in Request.Form

'Отображение элемента

Next %>


Если элемент управления формы имеет несколько значений, (как, например, в случае списка), для извлечения отдельных значений применяются индексы переменных набора Form.

 
Пример Здесь показано, как получить доступ к первому и второму значениям переменной «color», выбранным из многозначного списка:

Request.Form("color")(0)

Request.Form("color")(1)

Резюме

Объект Request позволяет извлечь значения, содержащиеся в HTTP-запросе. Объект Request обеспечивает доступ ко всей информации, передаваемой Web-серверу, а также содержит пять наборов для извлечения данных конкретного типа. Набор QueryString выделяет информацию из заголовка HTTP-запроса, набор Form — из тела HTTP-запроса, а набор Cookies извлекает значения агентов, переданных в HTTP-запросе. Набор ClientCertificate содержит значения полей сертификата запроса, а набор ServerVariables представляет значения предопределенных переменных среды Web-сервера.