1

我是德尔福的新手。为了与 WebService 通信,我添加了两个组件,TIdHTTP 和 TIdSSLIOHandlerSocketOpenSSL for SSL(https)。从服务器获取响应时,它不起作用并返回“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_OpenSSL096m.zip 的 Indy-10.1.5 和 Delphi-7、Win-7x64 和 SSL dll。我的问题是当我使用一些非常慢的网站时。即使在 Google Ghrome 中的那些网站有时也无法正常工作,它会显示“此页面不可用” - 相反。其他网站工作正常。

于 2014-11-24T01:17:39.440 回答
0

当我在最新版本的 Indy 中尝试时,您显示的代码可以正常工作。String如预期的那样,返回的包含站点的 HTML。

默认情况下, Indy 对其ConnectTimeoutReadTimeout属性使用无限超时,因此出现该错误的唯一方法是操作系统本身在尝试连接到服务器时超时。确保您的机器有可以到达的网络路由esta.cbp.dhs.gov。您可以在网络浏览器中加载 URL 吗?

于 2014-09-25T02:31:13.960 回答