все привет, помогите сделать коннект к сайту по 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); 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 protected] pass=123123 submit=.
мне кажется надо куки включить, если не сработает, пробуй реферер добавить думаю еще, хорошо получать результат пост запроса, авось там ответ и по поводу оптимизации, не удержался: Code: for i:=0 to Memo2.Lines.Count - 1 do begin lData.Add(memo2.Lines.Strings[i]); end; можно заменить на Code: lData:=Memo2.Lines;
спасибо за ответ! вот это Code: HTTP.Post('http://vkontakte.ru', lData);// s := http.Get('http://vkontakte.ru'); заменить на Code: //HTTP.Post('http://vkontakte.ru', lData);// s := http.post('http://vkontakte.ru',ldata); верно?
еще заметил что символ @ меняется на %40 при входе из браузера, а если из дельфи то не меняется, попробовал написать %40 вместо @, в результате получил %2540
мне кажется обязательно нужно включить кукисы ставь на форму IdCookieManager [Indy Misc] и в свойстве CookieManager у IdHTTP укажи его также AllowCookies тру это необходимое условие) достаточное ли оно - хз) может еще че-то надо
Выставляешь компонент IdCookieManager на форму. Code: 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; Не проверял, но кажется так
Code: try HTTP.Post(site+'/login.php', lData); except end; try s := http.Get(site+HTTP.Response.Location); except end; Начинается(( очередной велосипед?, не легче ли просто разрешить редиректы и все.
тогда можно обойтись и без куки мэнеджера, если на то пошло, а просто выдергивать куки из заголовка, и посылать их в следующем запросе...
GooGLE и тогда ты точно будешь знать. А вообще покажу для примера: Code: Memo1.Text:=http.Response.RawHeaders.Text; И ты прикинь, у этого компонента еще много интересных функций... __________________ (forum.devisible.ru - форум программистов, программы на заказ)