![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Есть код авторизации.
Цитата:
Но успешная авторизация получается при двух редиректах. А после второго CookieManager перезаписывается. Как сохранить куки после первого редиректа? В частности нужно: mystr:=Copy(s,AnsiPos('PHPSESSID=',s)+10,32); где s - искомые куки. |
|
#2
|
||||
|
||||
|
у TIdHTTP есть событие OnRedirect. в нем и отлавливай Cookie.
|
|
#3
|
|||
|
|||
|
Так?
Код:
procedure TForm1.IdHTTP1Redirect(Sender: TObject; var dest: string;
var NumRedirect: Integer; var Handled: Boolean; var VMethod: string);
var
mystr,s:string;
begin
mystr:=Copy(s,AnsiPos('PHPSESSID=',s)+10,32);
end;А не ли варианта вроде: if HTTP.OnRedirect then ... ? |
|
#4
|
||||
|
||||
|
типа этого:
Код:
procedure TForm1.IdHTTP1Redirect(Sender: TObject; var dest: String;
var NumRedirect: Integer; var Handled: Boolean;
var VMethod: TIdHTTPMethod);
var
i: Integer;
s: String;
begin
for i:=0 to IdHTTP1.CookieManager.CookieCollection.Count-1 do
begin
s:=IdHTTP1.CookieManager.CookieCollection.Items[i].Domain;
s:=IdHTTP1.CookieManager.CookieCollection.Items[i].CookieName;
s:=IdHTTP1.CookieManager.CookieCollection.Items[i].Value;
end;
end; |
|
#5
|
|||
|
|||
|
Я не понял че за коды куда их вписывать помогите плииз
![]() |
|
#6
|
|||
|
|||
|
есть не плохой компанент http://kdcodes.blogspot.com/p/idhttpex.html
|
|
#7
|
|||
|
|||
|
тоже возникла проблема с куками. сайт их передает, но они не записываются.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdCookieManager, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdAntiFreezeBase, IdAntiFreeze, IdHTTP, IdHTTPEx;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
IdHTTP1: TIdHTTP;
IdCookieManager1: TIdCookieManager;
IdAntiFreeze1: TIdAntiFreeze;
Button2: TButton;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
http: TIdHTTPEx;
CM : TidCookieManager;
Data : TStringList;
StrPage, s: String;
i,y : integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
try
http := TIdHTTPEx.Create(self);
Data := TStringList.Create;
CM := TidCookieManager.Create(Http);
Http.AllowCookies := true;
Http.CookieManager := CM;
Http.HandleRedirects := true;
HTTP.RedirectMaximum:=2;
Http.Request.Host:='murclub.ru';
Http.Request.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10';
Http.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
Http.Request.AcceptLanguage:='ru,en-us;q=0.7,en;q=0.3';
Http.Request.AcceptEncoding:='gzip, deflate';
Http.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7';
Http.Request.Connection:='keep-alive';
Http.Request.Referer:='http://murclub.ru/index.php';
Http.Request.ContentType:='application/x-www-form-urlencoded';
Data.Add('login=***');
Data.Add('password=***');
Data.Add('hop=1');
StrPage := Http.PostEx('http://murclub.ru/index.php', Data);
s:= HTTP.Response.RawHeaders.text
finally
Data.Free;
CM.Free;
Http.Free;
end;
if Pos('http://swf.murclub.ru/flash/chatpreloader.swf',StrPage) <> 0 then
ShowMessage('Àâòîðèçàöèÿ ïðîøëà óñïåøíî')
else
ShowMessage('Àâòîðèçàöèÿ ïðîâàëèëàñü');
Memo1.Lines.Text := StrPage;
Memo2.Lines.Text := s;
end;
end.вот мой код, подскажите, возможно чего-то не хватает тут |