Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Indy tidhttp (https://www.delphipraxis.net/173553-indy-tidhttp.html)

frankbellartz17 2. Mär 2013 23:26

Indy tidhttp
 
Ich arbeite an einem Programm, das Webseiten aus einer Kundendatenbank abruft, nach bestimmten Kriteren durchsucht und die Ergebnisse aktuell im Intranet des Unternehmens zur Verfügung stellt. In diesem Projekt verwende ich die indy Komponente tidhttp in einer Multithread-Umgebung. In der Regel werden ca. 40.000Websites mit jeweils max. 60 Unterseiten abgerufen. Das ganze funktioniert auch ganz gut. Leider ist mir aufgefallen, das während des Abrufs threads nach und nach ausfallen. Dies passiert immer bei den gleichen websites. (www.original-klopfer.de, www.kwo.de,..). Im Internetexplorer lassen sich die Sites einwandfrei laden. In einem einfachen Programm mit auf die Form gezogene tidhttp-Komponente tritt der gleiche Effekt auf. Das Programm hängt sich auf.
Vielleicht kennt jemand von euch den Grund.

procedure TForm2.Button1Click(Sender: TObject);
var SS : TStringStream ;
begin
SS := TStringStream.Create ;
try
HTTP.get('http://www.kwo.de',ss) ;
showmessage (ss.DataString) ;
finally
SS.Free ;
end;

end;

geskill 3. Mär 2013 19:16

AW: Indy tidhttp
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hey,
bei mit D2k10 funktioniert es. Habe aber auch die neuste Indy Version. Willkommen in der DP ;)

Das Problem liegt aber an den http-equiv der beiden Webseiten. Siehe Screenshot im Anhang. Der FireFox zeigt das wunderbar an.

Bei original-klopfer.de bekomme ich dann auch noch eine Exception, die meine Vermutung bestätigt:
Zitat:

Erste Gelegenheit für Exception bei $7603C41F. Exception-Klasse EConvertError mit Meldung ''''' is not a valid integer value'. Prozess Project1.exe (5332)
Also am besten du meldest dies den Webseitenbetreibern :)

Das Parsen der http-equiv durch die Indy Komponente ist sehr suboptimal umgesetzt, so kann es bei Fehlern durch die Webseite zu einer Endlosschleife (innerhalb der Indy Komponente) kommen. Die neuen Versionen sind etwas robuster, aber auch diese können in Endlosschleifen geraten!
Da bleibt die dann nur das Parsen des http-equiv zu deaktivieren:
Delphi-Quellcode:
  with <TIdHTTP-Instance> do
    HTTPOptions := HTTPOptions + [hoNoParseMetaHTTPEquiv];
Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 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