DelphiとIndy9/10を使用して特定のWebサーバーからfavicon.icoを受信する際に問題が発生しました。他のサーバーは正常に動作します。wgetコマンドラインユーティリティがファイルを正しく取得するため、このWebサーバーには問題はありません。
これがwgetからの出力です:
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]
これが私のDelphiIndy9/10サンプルコードです。「ConnectionClosedGracefully」例外が生成され、結果は空の文字列になります。
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.google.com/favicon.ico');
すべてが正常に機能します。
サーバーからIdHTTP1.Getを使用してhttp://perforce.eigenbase.org:8080/favicon.icoファイルを取得するための回避策はありますか?