uses IdMultipartFormData;
{ .... }procedure TForm1.Button1Click(Sender: TObject);
var
data: TIdMultiPartFormDataStream;
begin
data := TIdMultiPartFormDataStream.Create;
try{ add the used parameters for the script }
data.AddFormField('param1', 'value1');
data.AddFormField('param2', 'value2');
data.AddFormField('param3', 'value3');
{ Call the Post method of TIdHTTP and read the result into TMemo }
Memo1.Lines.Text := IdHTTP1.Post('http://localhost/script.php', data);
finally
data.Free;
end;
end;
Here's the translation of the content into Russian:
Код, который вы предоставили, написан на Delphi и использует библиотеку Indy для отправки HTTP-запроса POST с данными формы в скрипт PHP.
Вот разбивка того, что код делает:
Создается экземпляр TIdMultiPartFormDataStream, который представляет собой данные формы, которые будут отправлены в запросе POST.
Метод AddFormField используется для добавления трех полей формы (param1, param2 и param3) с соответствующими значениями (value1, value2 и value3).
Затем код использует компонент TIdHTTP (который также является частью библиотеки Indy) для отправки запроса POST на http://localhost/script.php. Данные формы, созданные в шаге 2, отправляются вместе с запросом.
Ответ от скрипта PHP читается и хранится в контроле TMemo с именем Memo1.
Вот пример того, что скрипт PHP (script.php) мог бы выглядеть:
<?php
// Получаем поля формы
$param1 = $_POST['param1'];
$param2 = $_POST['param2'];
$param3 = $_POST['param3'];
// Обрабатываем данные формы и отправляем ответ обратно в Delphi
echo "Полученные параметры:\n";
echo "Param 1: $param1\n";
echo "Param 2: $param2\n";
echo "Param 3: $param3\n";
?>
Этот скрипт PHP получил бы поля формы, отправленные кодом Delphi, и вывел их на консоль. Ответ от скрипта PHP затем отображается в контроле TMemo с именем Memo1.
Если вам нужно отобразить результат запроса POST в более читаемом формате, вы можете использовать следующий код:
procedure TForm1.Button1Click(Sender: TObject);
var
data: TIdMultiPartFormDataStream;
begin
data := TIdMultiPartFormDataStream.Create;
try
data.AddFormField('param1', 'value1');
data.AddFormField('param2', 'value2');
data.AddFormField('param3', 'value3');
Memo1.Lines.Text := IdHTTP1.Post('http://localhost/script.php', data);
Memo1.Lines.LoadFromStream(IdHTTP1.Response.IOResult);
finally
data.Free;
end;
end;
В этом коде ответ от скрипта PHP загружается в TStringStream и затем отображается в контроле TMemo. Это сделает более легко читать ответ, не нужно было бы вручную парсить поток байтов, отправленный скриптом PHP.
В статье описывается пример использования компонента TIdHTTP из Delphi для выполнения запроса HTTP POST и отправки данных в формате multipart/form-data.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS