Просмотр полной версии : 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;
спасибо за ответ!
вот это
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);
верно?
еще заметил что символ @ меняется на %40 при входе из браузера, а если из дельфи то не меняется, попробовал написать %40 вместо @, в результате получил %2540
Мужики, по-любому кто-то с этим сталкивался, откликнитесь.
crystalbit
19.01.2009, 21:44
мне кажется обязательно нужно включить кукисы
ставь на форму IdCookieManager [Indy Misc]
и в свойстве CookieManager у IdHTTP укажи его
также AllowCookies тру
это необходимое условие) достаточное ли оно - хз)
может еще че-то надо
спасибо, но не помогает((
crystalbit
19.01.2009, 21:58
sources.ru
обсуждение 1 (http://forum.sources.ru/index.php?showtopic=220319)
обсуждение 2 (http://forum.sources.ru/index.php?showtopic=232536)
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;
Начинается(( очередной велосипед?, не легче ли просто разрешить редиректы и все.
cylaaaan
21.01.2009, 02:59
а может понадобится отложить куки для отправки сообщения ? )
De-visible
21.01.2009, 03:02
а может понадобится отложить куки для отправки сообщения ? )
тогда можно обойтись и без куки мэнеджера, если на то пошло, а просто выдергивать куки из заголовка, и посылать их в следующем запросе...
cylaaaan
21.01.2009, 03:23
приведи пример, буду знать
De-visible
21.01.2009, 03:43
приведи пример, буду знать
GooGLE и тогда ты точно будешь знать.
А вообще покажу для примера:
Memo1.Text:=http.Response.RawHeaders.Text;
И ты прикинь, у этого компонента еще много интересных функций...
__________________
(forum.devisible.ru - форум программистов, программы на заказ)
cylaaaan
21.01.2009, 13:04
а, ты об этом, я это знал :P
De-visible
21.01.2009, 20:45
а, ты об этом, я это знал :P
Если бы знал не спрашивал бы...
Хорош флудить, а то тему вынудишь снести...
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot