![]() |
Keine Post-Daten beim OnBeforeNavigate2-Event (TWebBrowser)
Hi DP'ler,
ich verwende in einem meiner Projekte das TWebBrowser-Objekt. Hierbei ist es notwendig ab und an die URL geringfügig zu ändern. Dies hab ich bisher über den OnBeforeNavigate2-Event geregelt: cancel auf true gesetzt, und die übergebene URL verändert, und schließlich wieder Navigate2 mit den restlichen übergebenen Parameter aufgerufen (natürlich mit entsprechenden Sicherheitsmaßnahmen gegen mögliche Endlosschleifen):
Delphi-Quellcode:
Das einzige Problem dabei ist, dass hier scheinbar keine Post-daten übergeben werden. Somit sind keinerlei Logins o.ä. möglich.
procedure TForm2.WebBrowser1BeforeNavigate2(ASender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); begin //... Cancel := true; (ASender as TWebBrowser).Navigate2(URL, Flags, TargetFrameName, PostData, Headers); //... end; Hat jemand eine Ahnung warum, und eine Lösung für dieses Problem? ciao & thx, Philipp |
Re: Keine Post-Daten beim OnBeforeNavigate2-Event (TWebBrows
Hallo Philipp,
beim Lesen deines Threads ist mir ein Fehler in einem Beispielcode von mir aufgefallen: ![]() Vielleicht ist das auch bei dir zu berücksichtigen? Freundliche Grüße |
Re: Keine Post-Daten beim OnBeforeNavigate2-Event (TWebBrows
Zitat:
Gewundert hat mich bei dem OnBeforeNavigate2-Event ja sowieso, dass alle Parameter per "var" übergeben werden, aber wenn ich einen jetzt aber einfach ändere (abgesehen vom cancel-Parameter), hat das scheinbar keinerlei weitere Auswirkungen ... mfg, Philipp |
Re: Keine Post-Daten beim OnBeforeNavigate2-Event (TWebBrows
Hat keiner ne Idee?
*push* |
Re: Keine Post-Daten beim OnBeforeNavigate2-Event (TWebBrows
Hallo Philipp,
bist du sicher, dass der Server mit POST kontaktiert wird? Hast du mal im Event OnBeforeNavigate2() überprüft, ob PostData überhaupt etwas enthält? Leite doch mal auf eine PHP-Seite um und inspiziere mit phpinfo() was beim Server ankommt. Freundliche Grüße |
Re: Keine Post-Daten beim OnBeforeNavigate2-Event (TWebBrows
Zitat:
Zitat:
Wie gesagt, die Post-Daten kommen erst gar nicht bis zur OnBeforeNavigate2-Funktion, die gehen meiner Meinung nach irgendwo vorher schon verloren ... mfg, Philipp |
Re: Keine Post-Daten beim OnBeforeNavigate2-Event (TWebBrows
Also, ich hab jetzt eine Methode gefunden, damit das ganze funktioniert, obwohl ich dies für ziemlich sinnlos halte:
Delphi-Quellcode:
Hier werden zuerst die PostDaten in einen String umgewandelt, und wieder "zurückgewandelt" in einen Var-Array of Byte ... danach gehts komischerweise ...
function GetPostData(PostData: OleVariant): string;
var i: Integer; begin Result := ''; if not(VarIsEmpty(PostData) or (VarToStr(PostData) = ''))then for i := 0 to VarArrayHighBound(PostData, 1) - 1 do Result := Result + Chr(StrToInt(PostData[i])); end; function SetPostData(PostData: string): OleVariant; var i: Integer; begin Result := VarArrayCreate([0, Length(PostData) - 1], varByte); for i := 1 to Length(PostData) do Result[i - 1] := Ord(PostData[i]); end; procedure TForm2.WebBrowser1BeforeNavigate2(ASender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); var PostData2: OleVariant; begin //... Cancel := true; PostData2 := SetPostData(GetPostData(PostData)); (ASender as TWebBrowser).Navigate2(URL, Flags, TargetFrameName, PostData2, Headers); //... end; Und noch etwas für die Freunde der IE-ActiveX-Alternative, dem Mozilla-ActiveX-Control von ![]() ![]() ciao, Philipp |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz