Так. Значит. Я вот решил подойти к сетевому коддингу с другой стороны. не через инди а через синапс. Если кто-то работал с этой библиотекой помогите разобрться с редиректом: Код функции получения куков:
Code
function coocs(method,zap,params,ref,mime,proxyTYPE,proxy,port,proxyUSER,proxyPASS:string;headerS:array of string):string;
var Header : TStringList;
Contents : TStringList;
httpsend: THTTPSend;
ss: TStringStream;
i:integer;
rev:string;
begin
Header := TStringList.Create;
Contents := TStringList.Create;
ss := TStringStream.Create('');
httpsend:=THTTPSend.Create;
HTTPsend.UserAgent:='Opera 9.0';
httpsend.Headers.Insert(0,'Referer: '+ref);//referer
//httpsend.Cookies.Text:=cooc; //coocies
httpsend.MimeType:=mime;
for i:=1 to 100 do begin
if trim(headers[i])<>''then
Header.Add(headers[i])
else break;
end;
httpsend.Headers.AddStrings(Header); //headers
if proxyTYPE='HTTP' then begin
httpsend.ProxyHost:=proxy;
httpsend.ProxyPort:=port;
end else if proxyTYPE='SOCKS 4' then begin
//HTTPsend.Sock.SocksType:=
HTTPsend.Sock.SocksIP := proxy;
HTTPsend.Sock.SocksPort := PORT;
//HTTPsend.Sock.SocksUsername := proxyUSER;
//HTTPsend.Sock.SocksPassword := proxyPASS;
//HTTPsend.Sock.SocksOpen;
end else if proxyTYPE='SOCKS 5' then begin
//HTTP.Sock.SocksType := ST_Socks5 ;
HTTPsend.Sock.SocksIP := proxy;
HTTPsend.Sock.SocksPort := PORT;
HTTPsend.Sock.SocksUsername := proxyUSER;
HTTPsend.Sock.SocksPassword := proxyPASS;
//HTTPsend.Sock.SocksOpen;
end;
if method='GET' then begin
httpsend.HTTPMethod('GET',zap );
end;
if method='POST' then begin
ss.WriteString(params);
httpsend.Document.LoadFromStream(ss);
httpsend.HTTPMethod('POST',zap);
end;
Contents.LoadFromStream(httpsend.Document);
rev := Contents.Text;
//////////////////////////////////////////////
if pos('vkrugudruzei.ru/?sessid=',GetLocation(httpsend.Headers))>0 then
begin
httpsend.Document.Clear;
httpsend.Headers.Clear;
httpsend.HTTPMethod('get','https://partner.r01.ru/AB/about_abonent.khtml');
httpsend.Document.SaveToStream(ss);
end
else
/////////////////////////////////////////////
result:=httpsend.Cookies.Text;
header.Free;
contents.Free;
ss.Free;
httpsend.Free;
exit;
end;
функция GetLocation:
Code
function GetLocation(const headers:TStringList):string;
var i:integer;
begin
for i := 0 to (headers.Count - 1) do
if pos('Location: ',headers[i])>0 then
begin
Result:=copy(headers[i],10,length(headers[i])-9);
break;
end;
end;
Дескать куки до редиректа то я получаю(ASPSESSIONIDSQSARDBT), а вот с редиректом беда. Я в коде уже запутался если честно. Функця кук не моя, я лишь ее пытаюсь модернизировать.
То, что заключено в ///////// это вставки из http://www.webdelphi.ru/2010....s-https . Помогите понять, почему редирект не работает?