[D7/INDY] TIdHTTP: Cookie Accept

0

Odnośnie TIdHTTP z pakietu INDY (v9).
Pomimo ustawienia AllowCookies := True oraz zdefiniowania "Cookie Managera", ciastka nie są wyłapywane przez ten komponent :-/
Czy istnieje jakiś sposób, by to zmienić?

PS 1: Używając programu próbuję zalogować się na SendSpace ;-P
PS 2: Czy może mieć znaczenie ustawienia "HandleRedirect := True" ?

0

Witam!

Handly redirects, czyli obsługa przekierowań jest jak najbardziej ważna, gdy po wysłaniu zapytania strona przekierowuje nas na inny adres.

0

Ja już nie wiem czy to Indy 9 sprawia takie problemy czy Wy (ostatnio było kilka wątków na temat Indy i ciastek) coś źle robicie. Do takich prostych spraw nie trzeba żadnego CookieMenagera. Macie przykład dla Indy 10 (polecam przesiadkę z 9 na 10) z tym nieszczęsnym sendspace (nie wiedziałem czy com czy pl to zrobiłem oba):

procedure TForm1.Button1Click(Sender: TObject);
const
  UA = 'Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1';
  CONTENT_TYPE = 'application/x-www-form-urlencoded';

  LOGIN_URL = 'http://www.sendspace.pl/logowanie';

  LOGIN = 'login';
  PASS = 'haslo';
var
  sl: TStringList;
begin
  IdHTTP1.Request.UserAgent:= UA;
  IdHTTP1.HandleRedirects:= True;
  IdHTTP1.Get(LOGIN_URL);
  IdHTTP1.Request.Referer:= LOGIN_URL;
  IdHTTP1.Request.ContentType:= CONTENT_TYPE;
  sl:= TStringList.Create;
  try
  sl.Add('login%5Busername%5D=' + LOGIN);
  sl.Add('login%5Bpassword%5D=' + PASS);
  Memo1.Text:= IdHTTP1.Post(LOGIN_URL, sl); //zwraca HTML zalogowanej strony
  finally
  sl.Clear;
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
  UA = 'Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1';
  CONTENT_TYPE = 'application/x-www-form-urlencoded';

  LOGIN_URL = 'http://www.sendspace.com/login.html';

  LOGIN = 'loginek';
  PASS = 'haselko';
var
  sl: TStringList;
begin
  IdHTTP1.Request.UserAgent:= UA;
  IdHTTP1.HandleRedirects:= True;
  IdHTTP1.Get(LOGIN_URL);
  IdHTTP1.Request.Referer:= LOGIN_URL;
  IdHTTP1.Request.ContentType:= CONTENT_TYPE;
  sl:= TStringList.Create;
  try
  sl.Add('action=login');
  sl.Add('submit=login');
  sl.Add('target=%252F');
  sl.Add('action_type=login');
  sl.Add('remember=1');
  sl.Add('username=' + LOGIN);
  sl.Add('password=' + PASS);
  Memo1.Text:= IdHTTP1.Post(LOGIN_URL, sl);
  finally
  sl.Clear;
  end;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1