Delphi i cookies

Odpowiedz Nowy wątek
2011-12-16 20:11
kawi3r
0

Witam,może dla większości pytanie banalne.Piszę program który loguje się na stroną poprzez komponent : TWebBrowser.Wszystko super działa...ale informacje taką dostaje podczas logowania :

Prawdopodobnie Twoja przeglądarka ma wyłączone technologie cookies i session (ciastek i sesji), logowanie z tego powodu nie jest możliwe technicznie. Włącz ciasteczka lub sesje, aby móc się zalogować!

Jak to rozwiązać aby komponent pobierał cocki?
funkcja :
ShowMessage(WebBrowser1.OleObject.Document.cookie);
pokazuje jakie ciasteczko niby zostało pobrane...

Pozostało 580 znaków

2011-12-16 20:14
kawi3r
0

Przepraszam za flood...
Znalazłem takie coś :

function GetCookies(WebBrowser : TWebBrowser) : String;
var
documentt: IHTMLDocument2;
cookies: String;
begin
documentt := WebBrowser.Document as IHTMLDocument2;
if Assigned(documentt) then
cookies := documentt.cookie;
Result:=cookies;
end;

Ale jak to użyć i gdzie podczas wykonywania programu ?

Pozostało 580 znaków

2011-12-16 20:26
0

A czy strona koniecznie korzysta JavaScriptu albo musisz pokazać jej wygląd czy potrzeba, bo jeżeli tylko się logujesz i potrzebujesz rezultaty strony po zalogowaniu to skorzystaj z pakietu Synapse (więcej informacji w google / na forum / w dokumentacji i przykładach oraz w moim ule na: Obsługa protokołu HTTP przy użyciu pakietu Synapse) lub ewentualnie Indy, ale tutaj zawsze są jakieś problemy z ciastkami i metodą POST, a przynajmniej wielu początkujących je ma, a im pomóc może wtedy chyba tylko Użytkownik o nicku kAzek. Wedlug mnie korzystanie koniecznie z TWebBrowser gdzie spokojnie temat można ogarnąć Synapse to jak polowanie na muchy z armatą.


edytowany 1x, ostatnio: olesio, 2011-12-16 20:27
Tak sobie pomyślałem że raczej większość użytkowników dobrze zna Indy więc mogli by pomóc, bo przecież trzeba to znać aby mówić że jest takie be ;) - kAzek 2011-12-16 21:03

Pozostało 580 znaków

2011-12-16 20:58
0

WebBrowser obsługuje ciacha jeżeli tylko Internet Explorer ma je włączone a funkcja którą znalazłeś nie służy do tego aby WebBrowser pobrał ciacha tylko do zwyczajnego sprawdzenia jakie ciacha zostały pobrane.
Jednak skoro strona wyświetla taką informację to:
a) masz faktycznie wyłączone ciacha w IE ale jeżeli przez przeglądarkę ręcznie się zalogujesz to nie w tym problem
b) wysyłasz jakieś inne niż strona oczekuje dane (może np.: przy tym logowaniu w formularzu jest jakiś identyfikator sesji który się zmienia a ty wysyłasz za każdym razem taki sam) ale nie wiem w jaki sposób się logujesz, nie podałeś ani linii kodu więc nie powiem co może być źle


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.

Pozostało 580 znaków

2011-12-16 21:04
kawi3r
0

Daje linijkę do komponentu w WebBrowser :
http://jakas_strona/account/l[...]name=login&password=hasło

Wcześniej otwiera się w tle po uruchomieniu strona logowania aby powrót działał....

Pozostało 580 znaków

2011-12-16 21:11
0

A sprawdziłeś jakimś snifferem (lub choćby przez przejrzenia w źródle strony kodu formularza logowania) jakie dane faktycznie są wysyłane podczas logowania? Czy faktycznie tylko login i password? No i czy na pewno logowanie jest zrobione metodą GET? Ja Ci tego nie powiem aby to sprawdzić musiałbym znać adres strony.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.

Pozostało 580 znaków

2011-12-16 21:19
0

Wysłałem Panu wszystko na PW

Podaje rozwiązanie które podesłał mi kolega @kAzek

 var
 PostData: string;
 Data: OleVariant;
 Headers: OleVariant;
 i: integer;
begin
 WebBrowser1.Navigate('http://http://strona.pl/account/login');

 PostData:= 'username=TU_LOGIN&userpassword=TU_HASLO&option=andback';

 Data := VarArrayCreate([0, length(PostData)-1], varByte);

 for i := 1 to length(PostData) do
   Data[i-1] := ord(PostData[i]);

 Headers := 'Content-type: application/x-www-form-urlencoded'#10#13;

 WebBrowser1.Navigate('http://strona.pl/account/login', EmptyParam, EmptyParam, Data, Headers);
end;
edytowany 2x, ostatnio: kawi3r, 2011-12-17 11:50
I tam poszła odpowiedź, bo chyba z jakiegoś powodu nie chcesz tutaj podać adresu strony. - kAzek 2011-12-16 21:37

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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