Шаг 8.
Создание Internet-приложений в среде Delphi. Работа с формой (окончание)

    На этом шаге мы рассмотрим реализацию ответа серверного приложения.

    Теперь перейдем ко второй части нашей задачи - получению данных от клиента и их публикации на сервере. Публиковать, на самом деле ничего не будем, просто прочитаем данные и вернем полученную информацию клиенту, чтобы быть уверенными - мы все прочитали правильно. Чтобы выполнить эту задачу нам надо создать заготовку приложения Web-сервера, что мы уже делали и как это делать - вы знаете. Тип приложения можете выбрать сами; по умолчанию везде далее предполагается тип CGI Stand-alone Executable. После того, как создано новое приложение, создаем в нем объект-действие с именем заданным по умолчанию, заходим в его обработчик события OnAction и добавляем в него следующие строки:

procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  Response.Content := ' <html><head><title> ' +
  'Подтверждение получения данных</title></head><body> ';
  Response.Content := Response.Content +
    '<h1>Подтверждение получения данных. </h1>';
  Response.Content := Response.Content +
    '<p>Ваше сообщение добавлено в конференцию.';
  Response.Content := Response.Content +
    '<p>ваше имя: '+ Request.ContentFields.Values['name'];
  Response.Content : = Response.Content +
    '<p>тема сообщения: '+ Request.ContentFields.Values['subject'];
  Response.Content := Response.Content +
    '<p>ваш e-mail: '+ Request.ContentFields.Values['email'];
  Response.Content := Response.Content +
    '<p>текст сообщения:<p> '+ Request.ContentFields.Values['body'];
  Response.Content := Response.Content + '</body></html>';
end;
Полный текст приложения можно взять здесь.

    После просмотра текста процедуры, видно как можно получать данные, отправленные клиентом и как-то их использовать дальше. Процедура-обработчик события OnAction получает через свои параметры два объекта Response и Request. Подробно мы поговорим о них позже, сейчас только скажем что в первый из них серверное приложение помещает ответ клиенту, а из свойств второго объекта, которые доступны только для чтения, приложение может достать данные, пришедшие от клиента. Если форма использует метод Post, то данные, как и в нашем случае, помещаются в свойство ContentFields. Если в запросе применяется метод Get, то данные запроса будут находится в свойстве QueryFields. В любом случае эти свойства - объекты класса TStrings и для работы с ними вам нужно использовать их свойства Strings или Values. Второй вариант удобнее, поскольку обратившись к очередному параметру запроса по имени, вы получаете значение этого параметра, тогда как из свойства Strings вы будете извлекать строки вида "имя_параметра=значение_параметра". В нашем случае, для параметра subject мы могли бы получить строку вида "subject=тема_сообщения". Примеры с заполненной формой и ответом, полученным клиентом от нашего серверного приложения, приведены на рисунках 1 и 2.


Рис.1. Внешний вид формы


Рис.2. Подтверждение серверного приложения

    На следующем шаге мы продолжим создавать серверные приложения.




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