我是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默认情况下为其ConnectTimeout
和ReadTimeout
属性使用无限超时,因此,发生该错误的唯一方法是,如果操作系统本身在尝试连接服务器时超时。确保您的计算机具有可到达esta.cbp.dhs.gov
的网络路由。您可以在网络浏览器中加载URL吗?
关于sockets - TIdHTTP返回“套接字错误#10060'#$ D#$ A'连接超时。”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26029184/