object Form1: TForm1
Left = 287
Top = 302
Width = 519
Height = 122
AutoSize = True
BorderWidth = 3
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Edit1: TEdit
Left = 0
Top = 0
Width = 201
Height = 21
TabOrder = 0
end
object Edit2: TEdit
Left = 0
Top = 32
Width = 201
Height = 21
TabOrder = 1
end
object Button1: TButton
Left = 128
Top = 64
Width = 75
Height = 25
Caption = 'POST'
TabOrder = 2
OnClick = Button1Click
end
object Memo1: TMemo
Left = 216
Top = 0
Width = 289
Height = 89
ScrollBars = ssVertical
TabOrder = 3
end
end
Посылка данных методом POST и обработка ответов
есть PHP скрипт, которому нужно передать данный POST запросом, и обработать от него ответ. подскажите, как это можно реализовать на Delphi?
Скрипт post.php на удалённом сервере:
Код:
<?php
echo "Прибыло:\r\n";
echo "Поле1: {$_POST['Field1']}\r\n";
echo "Поле2: {$_POST['Field2']}\r\n";
?>
echo "Прибыло:\r\n";
echo "Поле1: {$_POST['Field1']}\r\n";
echo "Поле2: {$_POST['Field2']}\r\n";
?>
Форма в Delphi:
Код:
В uses формы не забудь вписать два модуля: IdHTTP и IdMultipartFormData
Ну, и соответственно код OnClick кнопки:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
HTTP: TIdHTTP;
MPS: TIdMultiPartFormDataStream;
S: TStringStream;
begin
HTTP := TIdHTTP.Create(nil);
MPS := TIdMultiPartFormDataStream.Create;
S := TStringStream.Create('');
try
MPS.AddFormField('Field1', Edit1.Text);
MPS.AddFormField('Field2', Edit2.Text);
HTTP.Post('http://youserver/post.php', MPS, S);
Memo1.Text := S.DataString;
finally
MPS.Free;
HTTP.Free;
S.Free;
end;
end;
var
HTTP: TIdHTTP;
MPS: TIdMultiPartFormDataStream;
S: TStringStream;
begin
HTTP := TIdHTTP.Create(nil);
MPS := TIdMultiPartFormDataStream.Create;
S := TStringStream.Create('');
try
MPS.AddFormField('Field1', Edit1.Text);
MPS.AddFormField('Field2', Edit2.Text);
HTTP.Post('http://youserver/post.php', MPS, S);
Memo1.Text := S.DataString;
finally
MPS.Free;
HTTP.Free;
S.Free;
end;
end;
я начал делать с помощью wininet.pas, но так и непонял как обработывать ответы. т.е. post.php проверяет есть строка в базе, если нет, то программа составляет список (кароче, с этим я как нить разберусь).
P.S. вот код который написал:
Код:
var
hOpenHandle, hConnectHandle: Pointer;
host: string;
begin
host := http://youserver/post.php; //можно взять из TEdit
hOpenHandle := InternetOpen(nil, 0, nil, nil, 0);
if hOpenHandle <> nil then
begin
hConnectHandle := InternetConnect(nil, PChar(host), 80, nil, nil, 3, 0, 0);
end;
end;
hOpenHandle, hConnectHandle: Pointer;
host: string;
begin
host := http://youserver/post.php; //можно взять из TEdit
hOpenHandle := InternetOpen(nil, 0, nil, nil, 0);
if hOpenHandle <> nil then
begin
hConnectHandle := InternetConnect(nil, PChar(host), 80, nil, nil, 3, 0, 0);
end;
end;
Цитата: Sash1k
это случайно не с использованием компонента TNMHTTP?
Там же вполне латинскими буквами написано: TIdHTTP
посылаю запрос, программа выдаёт ошибку:
Цитата:
HTTP/1.1 302 Found