Программа авторизируется на сайте, ждет редирект, после делает запрос 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;