![]() |
Ico Datei vom Webserver holen
Hallo!
ich habe Probleme eine Ico Datei von einem bestimmten Webserver zu holen (andere Server funktionieren). Es liegt nicht am Server selbst, weil wget per Command Line kein Problem damit hat:
Delphi-Quellcode:
Das ganze mit Indy 9 oder Indy 10 liefert nur eine "Connection Closed Gracefully" Exception.c:\a>wget http://perforce.eigenbase.org:8080/favicon.ico SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc syswgetrc = c:/progra~1/wget/etc/wgetrc --2013-01-27 00:12:39-- http://perforce.eigenbase.org:8080/favicon.ico Resolving perforce.eigenbase.org... 72.14.190.177 Connecting to perforce.eigenbase.org|72.14.190.177|:8080... connected. HTTP request sent, awaiting response... 200 No headers, assuming HTTP/0.9 Length: unspecified Saving to: `favicon.ico' [ <=> ] 2.862 --.-K/s in 0s 2013-01-27 00:12:40 (143 MB/s) - `favicon.ico' saved [2862] Hier der Code:
Delphi-Quellcode:
Nehme ich einen anderen Server, z.B.
procedure TForm1.Button1Click(Sender: TObject);
var s: string; begin s := ''; try s := IdHTTP1.Get('http://perforce.eigenbase.org:8080/favicon.ico'); except on E: Exception do begin {$IFDEF DEBUG}ShowMessage('get error:'+E.Message){$ENDIF}; end; end; ShowMessage(IntToStr(Length(s))); end; s := IdHTTP1.Get('http://www.delphipraxis.net/favicon.ico'); Dann funktioniert es wunderbar (bekomme einen String der Länge 1150 zurück). |
AW: Ico Datei vom Webserver holen
Der Server perforce.eigenbase.org:8080 hat offensichtlich einen Bug.
Bei anderen Anfragen liefert der Server korrekte HTTP 1.0 Header mit; nur nicht bei der Datei favicon.ico.
Code:
Wahrscheinlich ist der Server, ebenso wie der Linux-Kernel 2.6, veraltet.
Server: P4Web/2009.2/LINUX26X86_64/228098
Der Firefox-Browser (und wahrscheinlich auch alle anderen Browser) kann deshalb das Icon auch nicht runterladen. |
AW: Ico Datei vom Webserver holen
Das hatte ich leider schon befürchtet. Ich hatte bei 1000 Servern etwa 10 die sich so verhalten.
Gibt es eine Lösung? WGet bekommt es ja hin. |
AW: Ico Datei vom Webserver holen
Man kann natürlich murksen.
Wenn der normale Weg über IdHTTP nicht funktioniert dann kann man den Datendialog selbst in die Hand nehmen. Eine TCP/IP-Verbindung zu perforce.eigenbase.org Port 8080 öffnen und folgende Anfrage schicken:
Delphi-Quellcode:
Was dann als Antwort vom Server kommt sind direkt die Daten der Resource favicon.ico.
var
request : Ansistring; begin request := 'GET /favicon.ico HTTP/1.0'#13#10+ 'Host: perforce.eigenbase.org:8080'#13#10+ 'User-Agent: Mozilla/5.0 '#13#10#13#10; Aber eigentlich sollte man die Admins anschreiben und mitteilen, dass ihr P4Web-Server veraltet ist. |
AW: Ico Datei vom Webserver holen
Habe einen vielsprechenden Work-Around gefunden, und zwar scheinen die Daten in IdHTTP1.ResponseText zu stecken.
Die ersten 30 Bytes von der Datei die ich mit wget bekomme und IdHTTP1.ResponseText sind laut Debugger gleich. Das Problem: die mit wget geholte Datei hat 2862 Bytes, die Länge von ResponseText ist nur 2316 Bytes lang. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 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