PDA

Просмотр полной версии : Delphi tidhttp post get


A_V
02.08.2008, 21:09
Желательно доходчиво и доступно, тупо от нуля...
Гуглил везде обсуждение и "как то" вроде понимаешь но не до конца...
Заранее спасибо за ссылочку!


Вот еще порыл вроде нашел...

http://www.swissdelphicenter.ch/torry/showcode.php?id=1855

NFM
02.08.2008, 21:24
http://www.bit-team.com/index.php?showtopic=1053&st=0

De-visible
02.08.2008, 21:29
что именно не понятно

NFM
02.08.2008, 21:37
вообще то про инди куча везде инфы, я сам недавно искал когда чекер на делфи писал(правда все равно на сокетах переписал). так что не отмазывайся что гугл и яша не работает.

A_V
02.08.2008, 21:40
вешаю на кнопочку

procedure TForm1.Button1Click(Sender: TObject);
var
data: TIdMultiPartFormDataStream;
begin
data := TIdMultiPartFormDataStream.Create;
try
{add the used parameters for the script}

data.AddFormField('login', '111');
data.AddFormField('passwd', '222);
data.AddFormField('Войти', 'submit');
{ Call the Post method of TIdHTTP and read the result into TMemo}
Memo1.Lines.Text := http.Post('http://mail.yandex.ru/pda/', data);
finally
data.Free;
end;
end;

нефига не пашет...

Гуру хелп плиз, лучше всего разбирать на примерах :)

neprovad
02.08.2008, 22:12
Сначала узнать что и куда передавать!
http://pda-passport.yandex.ru/passport?mode=auth
Данные POST как минимум
login=vova
passwd=123

PandoraBox
02.08.2008, 22:17
очень быстрый компонент GET/POST <тыц> (http://www.delphilab.ru/content/view/97/1/)

A_V
02.08.2008, 22:35
neprovad можно на примере, слабо догоняю

A_V
02.08.2008, 22:53
procedure TForm1.Button1Click(Sender: TObject);
var
SHttp: TSwinHttp;
begin
SHttp := TSwinHttp.Create();
SHttp.InThread := false; // переводим в синхронный режим
SHttp.Post('http://mail.yandex.ru/pda/', 'login=111&passwd=222' );
if SHttp.Error = 0 then // если всё успешно
Memo1.Lines.LoadFromStream(SHttp.Response.Content) ;
SHttp.Free;

end;

вот сделал на компоненте новом что то я не въезжаю что не правильно ...

PandoraBox
02.08.2008, 22:58
шас зделаю....

там еще 2 поля передается <input type="hidden" name="idkey" value="2Ep1217705940ymil6ll5p">

<input type="hidden" name="timestamp">


POST /passport?mode=auth HTTP/1.1
Host: pda-passport.yandex.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
Keep-Alive: 300
Connection: keep-alive
Referer: http://pda-passport.yandex.ru/passport?mode=auth
Cookie: yandexuid=1936284951213696636; yabs-frequency=/2/e8e_0Au3FBNrGG2U0pm0//fGAk0m41
Content-Type: application/x-www-form-urlencoded
Content-Length: 92
idkey=2Et1217706250uqa9qp0vx&timestamp=1217705353920&login=111&passwd=222&In=%C2%EE%E9%F2%E8

Indig0
02.08.2008, 23:19
вешаю на кнопочку

...................

нефига не пашет...

Гуру хелп плиз, лучше всего разбирать на примерах :)

Как по мне ТСтрингЛист попроще в качестве постдаты будет... вотъ подправил:
procedure TForm1.Button1Click(Sender: TObject);
var
data: TStringList;
begin
data := TStringList.Create;
try
{add the used parameters for the script}
data.Add('login=111');
data.Add('passwd=222');
data.Add('submit=Âîéòè');
{ Call the Post method of TIdHTTP and read the result into TMemo}
Memo1.Lines.Text := http.Post('http://mail.yandex.ru/pda/', data);
finally
data.Free;
end;
end;

A_V
03.08.2008, 00:01
Indig0
Сделал как ты сказал возвращает то же самое...

De-visible
03.08.2008, 00:05
Indig0
Сделал как ты сказал возвращает то же самое...
какая ошибка?

A_V
03.08.2008, 00:08
не ошибка, а в мемо возвращает исходный текст страницы логина а не "почты", или я что - то не так понимаю и еще надо ли включать хедеры?




procedure TForm1.Button1Click(Sender: TObject);
var
data: TStringList;
begin
data := TStringList.Create;
try
{add the used parameters for the script}
data.Add('login=123');
data.Add('passwd=123');
data.Add('submit=Войти');
{ Call the Post method of TIdHTTP and read the result into TMemo}
Memo1.Lines.Text := http.Post('http://pda-passport.yandex.ru/passport?mode=auth', data);
finally
data.Free;
end;
end;

PandoraBox
03.08.2008, 00:09
Там еще нада куки подстовлять + urlencode (http://www.delphisources.ru/pages/faq/base/encode_url.html) и формировать второй запрос для логирования проще на PHP

A_V
03.08.2008, 00:11
оо вроде зхаработало!!!

De-visible
03.08.2008, 00:12
Во первых, пиши код в тегах [.CODE]
Во вторых ты забыл про печенья(cookie)
В третьих авторизация на idHTTP Indy 9
наврядли получится, решение или Indy 10
Или Сокеты(рекомендую)
Пример авторизации тут (https://forum.antichat.ru/threadnav69514-2-10.html)

A_V
03.08.2008, 00:14
Про теги учту, у меня делфи 2007(там же инди 10? )
Все заработало, а что без печенек может не получится?


------------------------------------
Спасибо большое всем!!!

De-visible
03.08.2008, 00:25
ЗАКРЫТО.