AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Webbrowser Daten per Post werden nicht komplett übertragen
Thema durchsuchen
Ansicht
Themen-Optionen

Webbrowser Daten per Post werden nicht komplett übertragen

Ein Thema von Pichel · begonnen am 1. Nov 2007 · letzter Beitrag vom 6. Nov 2007
Antwort Antwort
Benutzerbild von Pichel
Pichel

Registriert seit: 25. Feb 2005
Ort: Kassel
65 Beiträge
 
Delphi 7 Professional
 
#1

Webbrowser Daten per Post werden nicht komplett übertragen

  Alt 1. Nov 2007, 07:45
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
Grüße aus Kassel.

Konfuzius sprach: Etwas lernen und sich immer wieder darin üben - schafft das nicht auch Befriedigung?
  Mit Zitat antworten Zitat
hinnack

Registriert seit: 18. Nov 2004
22 Beiträge
 
#2

Re: Webbrowser Daten per Post werden nicht komplett übertrag

  Alt 2. Nov 2007, 07:52
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Webbrowser Daten per Post werden nicht komplett übertrag

  Alt 2. Nov 2007, 07:54
Er möchte aber nicht downloaden sondern Daten an ein Formular senden.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Pichel
Pichel

Registriert seit: 25. Feb 2005
Ort: Kassel
65 Beiträge
 
Delphi 7 Professional
 
#4

Re: Webbrowser Daten per Post werden nicht komplett übertrag

  Alt 2. Nov 2007, 13:19
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.
Grüße aus Kassel.

Konfuzius sprach: Etwas lernen und sich immer wieder darin üben - schafft das nicht auch Befriedigung?
  Mit Zitat antworten Zitat
hinnack

Registriert seit: 18. Nov 2004
22 Beiträge
 
#5

Re: Webbrowser Daten per Post werden nicht komplett übertrag

  Alt 6. Nov 2007, 21:36
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 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