AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Ico Datei vom Webserver holen
Thema durchsuchen
Ansicht
Themen-Optionen

Ico Datei vom Webserver holen

Ein Thema von Shark99 · begonnen am 27. Jan 2013 · letzter Beitrag vom 27. Jan 2013
Antwort Antwort
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#1

Ico Datei vom Webserver holen

  Alt 27. Jan 2013, 00:24
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:

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]
Das ganze mit Indy 9 oder Indy 10 liefert nur eine "Connection Closed Gracefully" Exception.

Hier der Code:
Delphi-Quellcode:
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;
Nehme ich einen anderen Server, z.B.

s := IdHTTP1.Get('http://www.delphipraxis.net/favicon.ico');

Dann funktioniert es wunderbar (bekomme einen String der Länge 1150 zurück).
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Ico Datei vom Webserver holen

  Alt 27. Jan 2013, 00:44
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:
Server: P4Web/2009.2/LINUX26X86_64/228098
Wahrscheinlich ist der Server, ebenso wie der Linux-Kernel 2.6, veraltet.
Der Firefox-Browser (und wahrscheinlich auch alle anderen Browser) kann deshalb das Icon auch nicht runterladen.

Geändert von sx2008 (27. Jan 2013 um 00:47 Uhr)
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#3

AW: Ico Datei vom Webserver holen

  Alt 27. Jan 2013, 00:46
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.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Ico Datei vom Webserver holen

  Alt 27. Jan 2013, 00:59
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:
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;
Was dann als Antwort vom Server kommt sind direkt die Daten der Resource favicon.ico.

Aber eigentlich sollte man die Admins anschreiben und mitteilen, dass ihr P4Web-Server veraltet ist.
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#5

AW: Ico Datei vom Webserver holen

  Alt 27. Jan 2013, 03:22
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.
  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 04:57 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