|
#1
|
|||
|
|||
Пост запрос
Как отправить пост запрос на сервер, и получить от сервера ответ
|
#2
|
||||
|
||||
indy-->idhttp.post
Последний раз редактировалось Admin, Сегодня в 10:32. |
#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; Пишу программы за еду. __________________ |