Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   IdHTTP в delphi (https://forum.antichat.xyz/showthread.php?t=101967)

bag 18.01.2009 22:44

IdHTTP в delphi
 
все привет, помогите сделать коннект к сайту по IdHTTP.
у меня не получается
делаю так:

var
i:integer;
s:string;
begin
lData := TStringList.Create;
http := TIdHTTP.Create(nil);
HTTP.HandleRedirects := True;
HTTP.ProtocolVersion := pv1_0;
HTTP.ProtocolVersion := pv1_0;
HTTP.Request.BasicAuthentication := True;

lData.Clear;
try
for i:=0 to Memo2.Lines.Count - 1 do
begin
lData.Add(memo2.Lines.Strings[i]);
end;
try
HTTP.Post('http://vkontakte.ru', lData);//
s := http.Get('http://vkontakte.ru');
except
end;
memo1.Lines.Add(s);
finally
end;
ldata.free;
end;


в мемо2:
email=123123@123.ru
pass=123123
submit=.

crystalbit 18.01.2009 22:52

мне кажется надо куки включить, если не сработает, пробуй реферер добавить
думаю еще, хорошо получать результат пост запроса, авось там ответ

и по поводу оптимизации, не удержался:
Код:

for i:=0 to Memo2.Lines.Count - 1 do
begin
lData.Add(memo2.Lines.Strings[i]);
end;

можно заменить на
Код:

lData:=Memo2.Lines;

bag 18.01.2009 23:03

спасибо за ответ!
вот это
Код:

HTTP.Post('http://vkontakte.ru', lData);//
s := http.Get('http://vkontakte.ru');

заменить на

Код:

//HTTP.Post('http://vkontakte.ru', lData);//
s := http.post('http://vkontakte.ru',ldata);

верно?

bag 18.01.2009 23:04

еще заметил что символ @ меняется на %40 при входе из браузера, а если из дельфи то не меняется, попробовал написать %40 вместо @, в результате получил %2540

bag 19.01.2009 21:39

Мужики, по-любому кто-то с этим сталкивался, откликнитесь.

crystalbit 19.01.2009 21:44

мне кажется обязательно нужно включить кукисы

ставь на форму IdCookieManager [Indy Misc]
и в свойстве CookieManager у IdHTTP укажи его
также AllowCookies тру

это необходимое условие) достаточное ли оно - хз)
может еще че-то надо

bag 19.01.2009 21:50

спасибо, но не помогает((

crystalbit 19.01.2009 21:58

sources.ru
обсуждение 1
обсуждение 2

cylaaaan 21.01.2009 01:56

Выставляешь компонент IdCookieManager на форму.

Код:

var
i:integer;
s:string;
site :string;
begin
site := 'http://vkontakte.ru';

Cookie := TIdCookieManager.Create(nil);
lData := TStringList.Create;
http := TIdHTTP.Create(nil);

HTTP.Cookiemanager := Cookie;
HTTP.HandleRedirects := False;

lData.Clear;
try

for i:=0 to Memo2.Lines.Count - 1 do
begin
lData.Add(memo2.Lines.Strings[i]);
end;

try
HTTP.Post(site+'/login.php', lData);
except
end;

try
s := http.Get(site+HTTP.Response.Location);
except
end;

memo1.Lines.Add(s);

finally
end;

ldata.free;

end;

Не проверял, но кажется так

De-visible 21.01.2009 02:31

Код:

try
HTTP.Post(site+'/login.php', lData);
except
end;

try
s := http.Get(site+HTTP.Response.Location);
except
end;

Начинается(( очередной велосипед?, не легче ли просто разрешить редиректы и все.


Время: 05:30