我是Delphi的新手。为了与WebService通信,我添加了两个组件,用于SSL(https)的TIdHTTP和TIdSSLIOHandlerSocketOpenSSL。从服务器获取响应时,它不起作用,并返回“套接字错误#10060'#$ D#$ A'连接超时”。我该怎么办?下面是我的代码。

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;


提前致谢。

最佳答案

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

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

关于sockets - TIdHTTP返回“套接字错误#10060'#$ D#$ A'连接超时。”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26029184/

10-09 23:08