![]() |
Webbrowser Daten per Post werden nicht komplett übertragen
Hi.
Also hab schon gesucht und rumprobiert aber finde keine Lösung. Wenn ich Daten per TWebBrowser an eine Webseiten (PHP) schicke welche diese in eine SQL-Datenbank speichern soll, wird ein Parameter immer ab ca. 80k abgeschnitten, dabei müsste die Datenmenge doch nur durch den Server begrenzt sein und weit höher liegen. Also vermute ich den Fehler bei mir. Zum posten verwende ich folgende Funktion:
Delphi-Quellcode:
Hat jemand eine Lösung für mich, bitte bitte bitte ;-)
function myBrowserPost(WebBrowser: TWebBrowser; Url, Params: String): Boolean;
var i: Integer; EncodedStr: string; Header: OleVariant; Post: OleVariant; begin // Make the post string URL encoded EncodedStr := Params; //'name=SwissDelphiCenter.ch&text=Test Guestbook entry'; // The post must be an array. But without null terminator (-1) Post := VarArrayCreate([0, Length(EncodedStr) - 1], varByte); // Put Post in array for I := 1 to Length(EncodedStr) do Post[I - 1] := Ord(EncodedStr[I]); Header := 'Content-Type: application/x-www-form-urlencoded' + #10#13; WebBrowser.Navigate(Url, EmptyParam, EmptyParam, Post, Header); Result := True; end; L.G.aus Kassel. Ps. Natürlich warte ich das onDocumentComplete ab ;-) |
Re: Webbrowser Daten per Post werden nicht komplett übertrag
probier mal:
![]() Dort gibt es eine Download Komponente mit der man alle Requests selber basteln kann. |
Re: Webbrowser Daten per Post werden nicht komplett übertrag
Er möchte aber nicht downloaden sondern Daten an ein Formular senden.
|
Re: Webbrowser Daten per Post werden nicht komplett übertrag
Nun... den TEmbeddedWb verwende ich ja schon und die Daten werden auch gesendet, allerdings kommt halt nicht alles mehr an sobald die ca 80k überschritten werden.
Eine Begrenzung des Servers ist ausgeschlossen da wenn das Post von einem Formular kommt ist es komplett nur wenn es aus der Webbrowserkomponente mit obiger Funktion geschickt wird fehlt was. |
Re: Webbrowser Daten per Post werden nicht komplett übertrag
also:
TEmbeddedWb hat eine Download Komponente (IEDownloadPtr in meinem Beispiel unten). Diese verwende ich wie folgt, um Daten zu posten:
Delphi-Quellcode:
wobei Postparams die URL-encodedten Post-Daten enthalten sollte (var1=xxx&var2=yyy)
IEDownloadPtr.DownloadMethod := dlFile;
IEDownloadPtr.DownloadDir := ''; IEDownloadPtr.Options := IEDownloadPtr.Options - [Asynchronous]; IEDownloadPtr.Method := Custom; IEDownloadPtr.CustomVerb := 'POST'; IEDownloadPtr.UserName := 'meinlogon'; IEDownloadPtr.Password := 'sehr sicher'; IEDownloadPtr.PostData := PostParams; IEDownloadPtr.AdditionalHeader.Clear; If AdditionalHeader <> '' then IEDownloadPtr.AdditionalHeader.Add(AdditionalHeader); BS := IEDownloadPtr.Go(URL, DestinationFile); try try while not (BS.State in [Canceled, Finished, IEDownload.Error]) do Sleep(100); Result := BS.ResponseHeader; if (BS.ResponseCode <> 200) and (BS.ResponseCode <> 206) and (BS.ResponseCode <> 304) then raise Exception.Create('HTTP error ' + IntToStr(BS.ResponseCode)); finally FreeAndNil(BS); end; except on e: Exception do raise Exception.Create(e.Message + ' on ' + URL); end; AdditionalHeader den Content-Type (Content-Type: multipart/form-data) man kann die Antwort des Webservers natürlich auch in einen Stream laden, statt in ein File (DestinationFile) Gruss Hinnack |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 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