Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Webbrowser Daten per Post werden nicht komplett übertragen (https://www.delphipraxis.net/102623-webbrowser-daten-per-post-werden-nicht-komplett-uebertragen.html)

Pichel 1. Nov 2007 06:45


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:
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;
Hat jemand eine Lösung für mich, bitte bitte bitte ;-)

L.G.aus Kassel.

Ps. Natürlich warte ich das onDocumentComplete ab ;-)

hinnack 2. Nov 2007 06:52

Re: Webbrowser Daten per Post werden nicht komplett übertrag
 
probier mal: http://www.bsalsa.com statt TWebBrowser - die sind kompatibel - kann man einfach austauschen.
Dort gibt es eine Download Komponente mit der man alle Requests selber basteln kann.

mkinzler 2. Nov 2007 06:54

Re: Webbrowser Daten per Post werden nicht komplett übertrag
 
Er möchte aber nicht downloaden sondern Daten an ein Formular senden.

Pichel 2. Nov 2007 12:19

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.

hinnack 6. Nov 2007 20:36

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:
   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;
wobei Postparams die URL-encodedten Post-Daten enthalten sollte (var1=xxx&var2=yyy)
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 06:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz