![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Программа авторизируется на сайте, ждет редирект, после делает запрос GET с целью выловить html-код страницы куда средиректило..
Отследил сниффером: По логике вещей все правильно – 2 GET и 1 POST но вот код в Memo так и не отображается. Код:
function FoundLocationStrNum(Headers: TStringlist): integer; var FoundStrPos, i : integer; begin Result:= -1; for i := 0 to Headers.Count do begin FoundStrPos := Pos('Location: ', Headers.Strings[i]); if FoundStrPos > 0 then begin Result:= i; exit; end; end; end; Код:
function GetHTTPStr(http: THTTPSend): string; var BodyStream: TStringStream; BodyS: TStringList; begin try BodyS := TStringList.Create; BodyStream := TStringStream.Create(result); begin BodyS.LoadFromStream(http.Document); result := BodyS.Text; end; finally BodyStream.Free; BodyS.Free; end; http.Document.Seek(0, soFromBeginning); end; Код:
procedure TForm1.btn1Click(Sender: TObject); var stream : TStringStream; http1,httpsend : THTTPSend; Res : boolean; n : integer; KSlink,TOKEN,NewURL:string; begin httpsend:=THTTPSend.Create; http1:=THTTPSend.Create; http1.HTTPMethod('get','https://my.kyivstar.ua/tbmb/login/perform.do'); mmo3.Lines.LoadFromStream(http1.Document); TOKEN:=Copy(mmo3.Text, Pos('org.apache.struts.taglib.html.TOKEN', mmo3.Text)+44, 32); edt1.Text:=TOKEN; stream:=TStringStream.Create(''); stream.WriteString('org.apache.struts.taglib.html.TOKEN='+TOKEN+'&isSubmitted=true&USERNAME=&USER_NAME=&ORIG_URL=&isInetUser=null&buser=&bpath=&user=%2B38'+edt2.Text+'&password=435465&Submit=%C2%F5%B3%E4+%E2+%F1%E8%F1%F2%E5%EC%F3&value%28jumpTo%29=&value%28jumpToUrl%29='); httpsend.MimeType:='application/x-www-form-urlencoded'; httpsend.Document.LoadFromStream(stream); Res:=httpsend.HTTPMethod('post','https://my.kyivstar.ua/tbmb/login/perform.do'); if Res then case httpsend.ResultCode of 301, 302, 307: begin n := FoundLocationStrNum(httpsend.Headers); if (n >= 0) and (n <= httpsend.Headers.count) then begin NewURL := StringReplace(httpsend.Headers.Strings[n],'Location: ','',[]); httpsend.Headers.Clear; httpsend.HTTPMethod('GET',NewURL); edt3.Text:=NewURL; mmo2.Lines.Text:=GetHTTPStr(httpsend); end; end; end; end; |
#2
|
|||
|
|||
![]() Кто-нибудь подскажет мою ошибку?
|
#3
|
||||
|
||||
![]() а что такое THTTPSend?
Пишу программы за еду. __________________ |
#4
|
|||
|
|||
![]() THTTPSend - класс из библиотеки Synapse
|