Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Mit IdHTTP wird die Seite unvollständig geladen (https://www.delphipraxis.net/196148-mit-idhttp-wird-die-seite-unvollstaendig-geladen.html)

bogdan 26. Apr 2018 14:12

AW: Mit IdHTTP wird die Seite unvollständig geladen
 
Die IdHTTP Instanz wir auch for dem Abruf der Seite auch immer neu erstellt.

bogdan 26. Apr 2018 14:22

AW: Mit IdHTTP wird die Seite unvollständig geladen
 
Zitat:

Zitat von mjustin (Beitrag 1400602)
Ist es die aktuellste Indy Version (10.6.2)?

Indy Version: 10.6.2.5263

HolgerX 26. Apr 2018 14:36

AW: Mit IdHTTP wird die Seite unvollständig geladen
 
Hmm..

OK, scheint ein Problem des Anzeige-Memos!

Habe die Länge des Textes vom Result-String (direkt vom Get) und vom Memo.Lines.Text verglichen.

Der Result-String ist 483164 Zeichen lang, der Text vom Memo 420676 Zeichen...
Eventuell wird da etwas geliefert, was das Memo als EOL (End of Line, in diesem Fall End of String) interpretiert.

HolgerX 26. Apr 2018 14:40

AW: Mit IdHTTP wird die Seite unvollständig geladen
 
Hmm..

Meine Vermutung ist richtig, an Position 420677 befindet sich ein #0 im Result-String!
Und da endet die Übernahme in die StringList..

bogdan 26. Apr 2018 14:42

AW: Mit IdHTTP wird die Seite unvollständig geladen
 
Hallo Holger,

schon mal danke für deine Mühen.

Unf wie kriege ich jetzt den kompletten Inhalt aus der INDY Komponente in ein String übergeben?

HolgerX 26. Apr 2018 14:46

AW: Mit IdHTTP wird die Seite unvollständig geladen
 
Hmm..

Um dein Beispiel zu nehmen:

Delphi-Quellcode:
function GetHTMLCode(xUrl: String): String;
begin
  Result := '';
  try
    Result := IdHTTP1.Get(xUrl);
  except
    on E: EIdHTTPProtocolException do
    begin
      Result := 'E.Message: ' + E.Message + #13#10;
      Result := Result +'E.ErrorMessage:' +#13#10;
      Result := Result + E.ErrorMessage;
    end;
  end;
end;

( Nur so hier im Browser geändert...)

Delphi.Narium 26. Apr 2018 14:49

AW: Mit IdHTTP wird die Seite unvollständig geladen
 
Alternativer Lösungsvorschlag:

Lade die Seite mal in 'nen MemoryStream und entferne ggfls. daraus die Hex 00, bevor Du das Ergebnis der Funktion als String zurückgibst.

TIDHttp hat 'ne überladene Funktion, mit der man die Daten in 'nen Stream bekommt.

Den Stream dann von Hex 00 bereinigen und dann per Stringliste.LoadFromStream(DeinStream) weiterverarbeiten.

bogdan 26. Apr 2018 14:50

AW: Mit IdHTTP wird die Seite unvollständig geladen
 
Hallo Holger,

ich kriege beim IdHTTP.GET Aufruf keine Exception, d.h. der HTML Code muss an der folgenden Position:
Code:
Result := IdHTTP1.Get(xUrl);
schon richtig ausgegeben werden.

bogdan 26. Apr 2018 15:11

AW: Mit IdHTTP wird die Seite unvollständig geladen
 
Habe die Funktion erst mal so umgeschrieben, bekomme aber so nur einen leeren String:

Code:
function GetHTMLCode(xUrl: String): String;
var
  xResult : TStringList;
  xResMemo : TMemoStream;
begin
  xResult := TStringList.Create;
  xResMemo : TMemoStream.Create;
  try
    try
      IdHTTP1.Get(xUrl, xResMemo);
      xResult.LoadFromStream(xResMemo);
    except
      on E: EIdHTTPProtocolException do
      begin
        xResult.Add('E.Message: ' + E.Message);
        xResult.Add('E.ErrorMessage:');
        xResult.Add(E.ErrorMessage);
      end;
    end;
  finally
    Result := xResult.Text;
    xResult.Free;
    xResMemo.Free;
  end;
end;

Delphi.Narium 26. Apr 2018 15:18

AW: Mit IdHTTP wird die Seite unvollständig geladen
 
Bitte eine Zeile einfügen:
Delphi-Quellcode:
      IdHTTP1.Get(xUrl, xResMemo);
      xResMemo.Position := 0; // <- das muss dazwischen!
      xResult.LoadFromStream(xResMemo);


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:12 Uhr.
Seite 2 von 3     12 3      

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