![]() |
|
|
#1
|
|||
|
|||
|
Как отправить пост запрос на сервер, и получить от сервера ответ
|
|
#2
|
||||
|
||||
|
indy-->idhttp.post
|
|
#3
|
|||
|
|||
|
Я только начал изучать дельфи, и у меня задача отправить с помощью xml в дельфи запрос на сервер, и получить ответ от сервера. Запрос у меня на получение реквизитов пользователя
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
Stream: TIdMultipartFormDataStream;
sl:tstringlist;
begin
Stream := TIdMultipartFormDataStream.Create;
sl:=tstringlist.create;
try
//sl.LoadFromFile('C:\zapros.xml');
sl.add('<?xml version="1.0" encoding="windows-1251"?>');
sl.add('<document>');
sl.add('<function name="employerInfo">');
sl.add('<param name="login">ivanov</param>');
sl.add('<param name="pass">f8b932c80d0b2e6bf025149a4fa68dfc</param>');
sl.add('</function>');
sl.add('<client name="SomeProgram" version="1.0"/>');
sl.add('</document>');
{Stream.AddFile('filename', 'C:\zapros.xml', 'xml');
Form1.IdHTTP1.HandleRedirects := True;
Form1.Memo1.text:=Form1.IdHTTP1.Post('http://xxx.xxx.xxx.xxx/api/functions.php', Stream );}
Form1.Memo1.text:=idhttp1.post('http://xxx.xxx.xxx.xxx/api/functions.php',sl);
finally
//Stream.Free;
end;Где у меня ошибка, подскажите плз... Последний раз редактировалось Admin, 14.02.2011 в 10:30. |
|
#4
|
||||
|
||||
|
пример:
Код:
var
stringlist: TStringList;
begin
stringlist:=TStringList.Create;
try
stringlist.Add('vb_login_username=пользователь');
stringlist.Add('vb_login_password=пароль');
stringlist.Add('cookieuser=1');
stringlist.Add('s=');
stringlist.Add('securitytoken=guest');
stringlist.Add('do=login');
stringlist.Add('vb_login_md5password=');
stringlist.Add('vb_login_md5password_utf=');
IdHTTP1.Post('http://сервер.ru/login.php?do=login', stringlist);
finally
stringlist.Free;
end;
end; |
|
#5
|
|||
|
|||
|
NumLock, мне при нажатии button он должен мне вывести результат, то есть получить реквизиты, я сделал точно также, но пока результат не выдается (((
|
|
#6
|
||||
|
||||
|
Код:
...
Memo1.Text:=IdHTTP1.Post('http://сервер.ru/login.php?do=login', stringlist);
Memo2.Text:=IdHTTP1.Response.RawHeaders.Text;
... |
|
#7
|
|||
|
|||
|
Вот что у меня получилось:
Код:
var
stringlist: TStringList;
begin
stringlist:=TStringList.Create;
try
stringlist.Add('vb_login_username=bmb');
stringlist.Add('vb_login_password=f8b932c70d0b2e6bf071729a4fa68dfc');
stringlist.Add('cookieuser=1');
stringlist.Add('s=');
stringlist.Add('securitytoken=guest');
stringlist.Add('do=login');
stringlist.Add('vb_login_md5password=');
stringlist.Add('vb_login_md5password_utf=');
Memo1.Text:=IdHTTP1.Post('http://xxx.xxx.xxx.xxx/api/functions.php?do=login', stringlist);
Memo2.Text:=IdHTTP1.Response.RawHeaders.Text;
finally
stringlist.Free;
end;К сожалению, что-то опять не-то ((( Последний раз редактировалось Admin, 16.02.2011 в 13:19. |
|
#8
|
||||
|
||||
|
эти ж поля: vb_login_username, vb_login_password и т.д. для каждого сервера свои!
|
|
#9
|
|||
|
|||
|
Извини если успел надоесть, напиши плз пример. Если я напишу 'vb_bmb_123=пользователь' - это будет правильно?
|
|
#10
|
|||
|
|||
|
Вопрос в том что как именно это писать. Так как я ламер в программировании прошу помощи: если я напишу ('vb_login_username=bmb') это будет правильно? Или нужно писать ('vb_login_bmb')? Please HELP
|
|
#11
|
||||
|
||||
|
post запрос обычно формируется в виде:
ключ1=значение1&ключ2=значение2&ключ3=значение3... |
|
#12
|
|||
|
|||
|
То есть если я напишу ('vb_login_username=bmb'), то это будет правильно, да?
|
|
#13
|
||||
|
||||
|
Цитата:
![]() могу лишь предположить: login=ivanov&pass=f8b932c80d0b2e6bf025149a4fa68dfc |
|
#14
|
|||
|
|||
|
Задача состоит в том что нужно получить от сервера ответ, в моем случае реквизиты пользователя. В программе я ввожу данные (имя,пароль и <function name="employerInfo"> - запрос на получение реквизитов), а так как на сервере есть данные на пользователя, сервер должен вывести на экран реквизиты
|
|
#15
|
||||
|
||||
|
все-равно я ничего не понял. будем гадать дальше
![]() Код:
var
stringstream: TStringStream;
begin
stringstream:=TStringStream.Create('');
try
stringstream.WriteString('<?xml version="1.0" encoding="windows-1251"?>');
stringstream.WriteString('<document>');
stringstream.WriteString('<function name="employerInfo">');
stringstream.WriteString('<param name="login">ivanov</param>');
stringstream.WriteString('<param name="pass">f8b932c80d0b2e6bf025149a4fa68dfc</param>');
stringstream.WriteString('</function>');
stringstream.WriteString('<client name="SomeProgram" version="1.0"/>');
stringstream.WriteString('</document>');
IdHTTP1.Request.ContentType:='application/x-www-form-urlencoded';
IdHTTP1.Request.ContentLength:=stringstream.Size;
stringstream.Position:=0;
Memo1.Text:=IdHTTP1.Post('http://xxx.xxx.xxx.xxx/api/functions.php', stringstream);
finally
stringstream.Free;
end;
end; |