![]() |
Mit IdHTTP wird die Seite unvollständig geladen
Habe schon einiges hier gefunden und gelesen und auch gegoogelt, leider verstehe ich nicht wie ich das Problem lösen kann.
Mache eine einfache GET Anfrage mit der IDHTTP Komponente.
Code:
95% der Seiten werden vollständig geladen. Ab und zu aber wird nur ein Teil der aufgerufenen Seiten ausgegeben. zb. 1/3 oder die Hälfte, das ist immer wieder unterschiedlich, d.h. ab und zu fehlt ein Teil des HTML-Codes in der TStringList Variable. Im FireFox oder Chrome wird der HTML-Code vollständig angezeigt.
function GetHTMLCode(xUrl: String): String;
var xResult : TStringList; begin xResult := TStringList.Create; try try xResult.Text := IdHTTP1.Get(xUrl); 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; end; end; Woran kann das liegen? |
AW: Mit IdHTTP wird die Seite unvollständig geladen
Wird der Code mittendrin abgeschnitten oder fehlen Teile mitten im Dokument? Bei letzterem Fall werden wohl schlicht Skripte die Teile hinzufügen.
|
AW: Mit IdHTTP wird die Seite unvollständig geladen
Der Code wird einfach abgeschnitten.
|
AW: Mit IdHTTP wird die Seite unvollständig geladen
Ist es eine Unicode-fähige Delphi Version? (Ab 2009)
|
AW: Mit IdHTTP wird die Seite unvollständig geladen
Ich nutze XE8 Enterprise
|
AW: Mit IdHTTP wird die Seite unvollständig geladen
Auf einer der Seiten wird der HTML Code nur bis zu einem "seltsamen" Zeichen angezeigt.
|
AW: Mit IdHTTP wird die Seite unvollständig geladen
Hmm..
Handelt es sich um eine öffentliche URL? Dann gebe sie mal zum Testen.. |
AW: Mit IdHTTP wird die Seite unvollständig geladen
Ist es die aktuellste Indy Version (10.6.2)?
|
AW: Mit IdHTTP wird die Seite unvollständig geladen
Vielleicht ein Seiteneffekt durch eine nicht sauber initialiserte Instanz - ich würde die TidHTTP Instannz nicht mehrmals verwenden sondern in der Funktion jeweils eine neue erzeugen.
Testweise könnte man das sicher schnell einbauen und sehen ob dann das Problem weiterhin besteht. Falls nein, ist irgendwas im unsichtbaren Code nicht korrekt. |
AW: Mit IdHTTP wird die Seite unvollständig geladen
Ja, ist eine relativ "öffentliche" URL einer "Warez"-Seite.
![]() Und vorab: ich bin nicht der, der die Inhalte dort hoch lädt. Die Inhalte dieser Seite werden für die "echten" Rechteinhaber benötigt. |
AW: Mit IdHTTP wird die Seite unvollständig geladen
Die IdHTTP Instanz wir auch for dem Abruf der Seite auch immer neu erstellt.
|
AW: Mit IdHTTP wird die Seite unvollständig geladen
Zitat:
|
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. |
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.. |
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? |
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...) |
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. |
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:
schon richtig ausgegeben werden.
Result := IdHTTP1.Get(xUrl);
|
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; |
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); |
AW: Mit IdHTTP wird die Seite unvollständig geladen
Hallo Delphi.Narium,
einen Sub-String in einem String zu ersetzen bzw. zu entfernen wäre jetzt kein Problem. Ich verstehe nur nicht wie ich einen Hex Wert aus einem Stream entfernen soll wenn ich den Stream nicht in einen String umwandeln kann? |
AW: Mit IdHTTP wird die Seite unvollständig geladen
'nen Stream kann man zeichenweise lesen und schreiben.
In 'ner Schleife prüfen, ob ein Zeichen eine Hex 00 ist, wenn ja z. B. durch Hex 32 (Blank) ersetzen. Schau bitte mal in dem Umfeld: ![]() |
AW: Mit IdHTTP wird die Seite unvollständig geladen
Vielen Dank an Alle für die zahlreichen Tips. Jetzt funktioniert es. :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:30 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