Работа с HTTP в Delphi
.docРабота с протоколом HTTP в Delphi
Часто возникают задачи, связанные с отправкой запросов на Web-сервер и получением ответов от него. Например, отправка данных через форму, получение какой-либо Web-страницы, или закачка файла с какого-либо сайта. Данные задачи решаются при помощи протокола HTTP.
В Delphi существует ряд различных классов и компонентов позволяющих реализовать обмен данными по протоколу HTTP. Один из наиболее часто используемых методов решения таких задач – использование компонентов Indy, в частности компонента IdHTTP (Находится на палитре компонентов “Indy Clients”).
Основные свойства компонента IdHTTP |
|
Request |
Объект класс TIdHTTPRequest, позволяет задавать заголовки HTTP запроса и дополнительные параметры. |
Основные методы компонента IdHTTP |
|
Post |
Позволяет отправлять POST запрос на указанный URL. Существует шесть методов POST, которые принимают разные параметры, основные из низ: Post(AURL: string; const ASource: TStrings): string; - отправляет список параметров заданных в переменной ASource на адрес заданный в AURL. Возвращает строку – тело ответа сервера. Post(AURL: string; const ASource: TStream): string; - отправляет данные из потока ASource на адрес AURL. Возвращает строку – тело ответа сервера. |
Get |
Позволяет отправлять GET запрос на указанный URL. Существует две реализации данного метода: procedure Get(AURL: string; const AResponseContent: TStream); - отправляет запрос на адрес AURL, ответ сервера записывается в поток AResponseContent. function Get(AURL: string): string; - отправляет запрос на адрес AURL, возвращает ответ сервера в виде строки. |
Пример отправки GET запроса на сервер
var
response: string;
begin
{
IdHTTP1 – компонент IdHTTP
Отправляем запрос на адрес http://www.yandex.ru
}
response := IdHTTP1.Get(‘http://www.yandex.ru’);
{
После вызова метода IdHTTP1.Get в строку response
помещается ответ сервера
}
end;
Пример отправки POST запроса на сервер
var
response, request: string;
begin
{
Строим XML, и сохраняем его в строку request
}
request := '<?xml version="1.0" encoding="UTF-8"?>';
request := request + '<root attribute="value">';
request := request + '<element>Value</element>';
request := request + '</root>';
{
Упаковываем строку запроса в поток данных TStringStream
и отправляем в POST запросе на адрес http://tusur.ru
}
response := IdHTTP1.Post('http://tusur.ru', TStringStream.Create(request));
{
После вызова метода IdHTTP1.Post в строку response
помещается ответ сервера
}
end;