1

私はDelphiが初めてです。WebService と通信するために、SSL (https) 用に TIdHTTP と TIdSSLIOHandlerSocketOpenSSL の 2 つのコンポーネントを追加しました。サーバーから応答を取得すると、機能せず、「Socket Error # 10060'#$D#$A'Connection timed out」が返されます。私は何をすべきか?以下は私のコードです。

procedure TForm1.btnRequestClick(Sender: TObject);
var
  s: string;
  lHTTP: TIdHTTP;
  lIOHandler: TIdSSLIOHandlerSocketOpenSSL;

begin
  lHTTP := TIdHTTP.Create(nil);
  lIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  try
    lHTTP.IOHandler := lIOHandler;
    lHTTP.HandleRedirects := True;
    s := lHTTP.Get('https://esta.cbp.dhs.gov/esta/');
    Memo.Text := s;
  finally
    lHTTP.Free;
    lIOHandler.Free;
  end;
end;

前もって感謝します。

4

2 に答える 2

0

あなたが示したコードは、最新バージョンの Indy で試してみると、そのままで問題なく動作します。返さStringれた には、予想どおり、サイトの HTML が含まれています。

Indy はデフォルトでConnectTimeoutおよびReadTimeoutプロパティに無限のタイムアウトを使用するため、そのエラーが発生する唯一の方法は、サーバーに接続しようとしたときに OS 自体がタイムアウトした場合です。に到達するためのネットワーク ルートがマシンにあることを確認しますesta.cbp.dhs.gov。Web ブラウザで URL を読み込めますか?

于 2014-09-25T02:31:13.960 に答える
0

同じメッセージがありました。indy_OpenSSL096m.zip から Indy-10.1.5 と Delphi-7、Win-7x64 と SSL dll を持っています。私の問題は、本当に遅い Web サイトを使用したときでした。Google Ghrome でさえ、これらのサイトが機能しないことがあります。代わりに、「このページは利用できません」と表示されます。他のサイトは正常に動作します。

于 2014-11-24T01:17:39.440 に答える