https://www.webtide.com/choose/jetty.jsp Web サイトのコンテンツを取得するために、Indy 10 HTTP クライアント (最新の SVN ビルド) と SSL ハンドラー (Delphi 7) を使用しています。
Windows 7 x64 (2 つのシステムでテスト済み) では問題なく動作しますが、WindowsXP x86 (3 つのシステムでテスト済み) では、テスト アプリは TIdHTTP.Get() でハングするだけで、回復の可能性はありません (つまり、ワーカー プロシージャで切断することさえあります)。 /thread は機能しません!)。テスト アプリは復元できないため、タスク マネージャーで閉じる必要があります。
SSL ライブラリ (32 ビット x86!) はhttp://slproweb.com/products/Win32OpenSSL.html にありますが、別のサイトから 5 つの他のバージョンを試しましたが、同じ結果でした。
ソース コード、コンパイル済みの実行可能ファイル、および SSL ライブラリを含む zip パッケージを次に示します。
https://www.dropbox.com/s/pd5soxon0qbnnl0/IndyTest.zip
ソース コードは次のとおりです (フォームにはボタンと 2 つのメモがあります)。
procedure TForm1.Button1Click(Sender: TObject);
var IdHTTP1: TIdHTTP;
sl : TStringList;
SSL1: TIdSSLIOHandlerSocketOpenSSL;
begin
try
try
IdHTTP1 := TIdHTTP.Create(nil);
sl := TStringList.Create;
SSL1 := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
SSL1.SSLOptions.Method := sslvSSLv23;
with IdHTTP1 do
begin
ConnectTimeout := 10 * 1000;
ReadTimeout := 10 * 1000;
IOHandler := SSL1;
Request.UserAgent := 'Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.7.3) Gecko/20040924 Epiphany/1.4.4 (Ubuntu)';
Memo2.Text := 'connecting...';
Application.ProcessMessages;
Memo1.Text := Get('https://www.webtide.com/choose/jetty.jsp');
Memo1.Lines.Add ('response: '+ResponseText);
Memo2.Text := 'connected or timeout...';
end;
except
On e: Exception do
Memo2.Text := 'Exception: '+e.Message;
end;
finally
IdHTTP1.Free;
SSL1.Free;
sl.Free;
end;
end;
WindowsXP でクラッシュ/ハングアップするのはなぜですか?