Lucrul cu cookie-ul din componenta twebbrowser (lectură, contabilitate)

Lucrul cu cookie-ul din componenta TWebBrowser (citire, contabilitate)

A fost o întrebare despre cookie și despre componenta TWebBrowser.
Întrebarea mea este împărțită în două părți

1) Prima parte se referă la obținerea cookie-urilor
2) A doua parte - transferul / instalarea cookie-urilor înainte de deschiderea paginii

Prima parte a întrebării a fost decisă, există suficiente documente pe Internet despre modul în care puteți număra cookie-ul folosind interfața OLE, și anume

myCookie: = (WebBrowser1.Document ca IhtmlDocument2) .cookie;

Aici partea a doua este mult mai complicată. După o lungă căutare, am ajuns la această concluzie, deoarece cookie-ul este trecut prin antet, ar trebui adăugat acolo înainte ca cererea să fie manuală, și anume:

Anteturi: = StringToVarArray ("COOKIE: test_cookie = 123456789" # 13 # 10);

Funcția StringToVarArray este necesară pentru a converti un tip String la un tip Variant. Codul funcției este foarte simplu:

funcția StringToVarArray (const S: string): Varianta;
# xA0; var
# xA0; # xA0; i: întreg;
începe
# xA0; Rezultat: = VarArrayCreate ([0, Lungime (S) - 1], varByte);
# xA0; pentru i: = 1 până la lungime (S)
# xA0; # xA0; Rezultat [i-1]: = ord (S [i]);
se încheie;

Totul ar trebui să fie ca în ciocolată, dar nifiga nu funcționează :-), nu numai cu cookie-uri, ci și cu PostData.

Cred că acest articol va fi interesant, poate veți observa că fac greșit?

ps Testarea pe care o petrec pe un computer local, instalat în apache. Scriptul readcockie.php afișează conținutul matricei COOKIE și POST.

pps Instalarea cookie-urilor prin componenta IdHTTP poate fi făcută trivial prin antet și cred că va funcționa acolo, deși nu am testat-o ​​personal încă, dar există posturi pe Internet pe care acest design le funcționează. Aș prefera o soluție cu TWebBrowser

Aici, cu o problemă deja înțeles în general, tastați deja localizat Eroare cu alte proprietăți Cookie variază fără probleme. Cum ar fi User-Agent și Referer testate personal.
Întrebare, cum să schimb cookie-ul?

IMHO: După cum am înțeles componenta TWebBrowser - precum și Delphi în sine, o mulțime de glitches! La naiba cum ai putut să faci o componentă fără a oferi utilizatorului posibilitatea de a transfera cookie-urile? Singura explicație este că Borland, ca Beal, este insolent deloc!

De fapt, din moment ce TWebBrowser nu are capacitatea de a edita eticheta cookie, se pare că va trebui să utilizați o componentă terță parte, de exemplu IdHTTP care o face bine. Și încărcați rezultatul în TWebBroser. Acum, întrebarea este cum puteți obține conținutul mesajelor GET, POST, Header. Totul trebuie procesat cu BeforeNavigate, dar cum se citește datele?

Vă mulțumim anticipat pentru orice sfat

Băieții mă ajută cu ultima parte a problemei. După un chin lung și o lectură MSDN a ajuns la concluzia că toate aceleași lucruri pe care le puteți gestiona prin:

(WebBrowser1.Document ca IhtmlDocument2) .cookie

dar sub o condiție, cookie-ul trebuie să fie trecut înainte de a putea fi editat. Anume, dacă ruperea unei adrese URL care stabilește cookie-ul după aceasta și numai după aceea, poate fi editat (înlocuit sau schimbat).

Dar dacă cookie-ul este stocat și îl editez înainte de cerere, atunci există probleme. Încercarea de a edita evenimentul Beforenavigate a eșuat deoarece, în această etapă, WebBrowser1.Document nu există deloc

Acest WebBrowser1.Document a existat Am încercat să deschid documentul despre: gol și numai după aceea am editat cookie-ul, dar nu sa întâmplat nimic :-(

Poate cineva va sfatui

Memorie: 0,74 MB
Durată: 0,043 secunde

Articole similare