Создание Internet-приложений в среде Delphi. Работа с объектом TWebRequest

   
На этом шаге мы рассмотрим свойства объекта TWebRequest.

   
При получении HTTP-запроса от клиента, Web-приложение разбирает запрос и
помещает данные из заголовка запроса и содержимое запроса в различные свойства объекта
TWebRequest. В случае приложений ISAPI и NSAPI это будет объект
TISAPIRequest, а для приложений CGI и WinCGI, объекты TCGIRequest
и TWinCGIRequest соответственно.

   
Свойства этих объектов условно можно разделить на группы:

  • свойства, идентифицирующие запрашиваемый источник;
  • свойства, описывающие Web-клиента;
  • свойства, идентифицирующие метод запроса;
  • свойства, описывающие ожидаемый ответ;
  • свойства, представляющие содержимое запроса.

Свойства, идентифицирующие запрашиваемый источник

   
Свойства, идентифицирующие запрашиваемый источник, включают в себя свойства

  • URL - полная строка запроса,
  • Host - имя или IP-адрес сервера,
  • ScriptName - имя серверного приложения,
  • PathInfo - информация о пути, используемая Web-диспетчером для
    вызова соответствующего объекта-действия и, наконец,
  • в свойство Query помещается информация для приложения о деталях запроса.

   
Например, если речь идет о выборке из базы данных,
то в свойство Query будут помещены соответствующие имена полей и их значения,
нужные для выборки. Для облегчения работы с запросом, строка запроса разбивается на
подстроки по знаку "амперсанда" и полученные строки, имеющие вид "Name=Value",
помещаются в свойство QueryFields типа TStrings.
Свойства, описывающие Web-клиента

   
Свойства, описывающие Web-клиента, это свойства From, Referer,
RemoteHost, DerivedFrom, RemoteAddr и UserAgent. В свойство From
записывается адрес электронной почты клиента. В свойстве Referer можно найти URI
ресурса, инициировавшего запрос. Если свойство Referer пустое, то можно использовать свойство
RemoteHost, в котором записан URI-клиента, но отсутствует информация о
пути. В свойстве DerivedFrom записывается URI источника, создавшего содержимое
запроса (свойство Content). Это свойство не пустое, если не пустое свойство Content
и если "контент" запроса был создан не Web-клиентом. В свойстве RemoteAddr записывается
IP-адрес клиента, а в свойстве UserAgent - имя приложения, приславшего запрос.
Свойства, идентифицирующие метод запроса

   
В свойства, идентифицирующие метод запроса, попадает свойство Method. Это свойство
может принимать следующие значения в стандарте HTTP 1.1:

  • OPTIONS - метод Options позволяет получить справочную информацию о запрашиваемом
    ресурсе и командах (методах) разрешенных на данном сервере;
  • GET - в ответ на такой запрос, клиент должен получить содержимое URI,
    указанного в запросе;
  • HEAD - по этому методу клиент получит только заголовочную информацию ресурса,
    указанного в запросе;
  • POST - в запросе Web-приложению передается информация, которая
    должна быть им опубликована;
  • PUT - запрос на замену указанного ресурса содержимым запроса;
  • DELETE - этот метод позволяет удалить или скрыть запрашиваемый URL;
  • TRACE - этот метод используется для отладки: сервер отсылает обратно
    клиенту присланный им "контент";

   
В эту группу можно включить еще и свойство MethodType.
Свойства, описывающие ожидаемый ответ

   
Свойства, описывающие ожидаемый ответ, это свойства Accept, IfModifiedSince и
Cookie. Первое свойство перечисляет типы мультимедийных файлов, с которыми может работать клиентское
приложение. Во втором свойстве можно указать время и использовать это значение с так
называемым условным GET, когда клиент запрашивает получение ресурса только в
том случае, если он изменился после указанного момента времени. Последнее свойство содержит
различные свойства Cookie, которые могут повлиять на содержание Web-ответа.
Свойства, представляющие содержимое запроса

   
Свойства, представляющие содержимое запроса, используются не всеми методами запроса,
но методу POST они требуются. Это свойства Content, ContentFields, ContentType,
ContentLength, ContentEncoding, ContentVersion и Title. Содержимое
запроса помещается в поле Content. Если запрос можно разбить на подстроки, разделенные
знаком амперсант, то полученные значения помещаются в свойство ContentFields типа TSrings.
Тип содержимого отмечается в свойстве ContentType. Обычно это свойство принимает значение text/html,
хотя в специфических случаях значения могут быть другими. Размер свойства Content в
байтах помещается в свойство ContentLength. Если содержимое запроса кодировалось, то
использованные для этого методы перечисляются в свойстве ContentEncoding через запятую.

   
В свойстве ContentVersion помещается информация об имени приложения и версии. В
свойстве Title может содержаться некоторая заголовочная информация.

   
Со следующего шага мы начнем рассматривать ответ приложения Web-сервера клиенту.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий