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

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

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

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

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

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

    Например, если речь идет о выборке из базы данных, то в свойство 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:

    В эту группу можно включить еще и свойство 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-сервера клиенту.




Предыдущий шаг Содержание Следующий шаг