我使用了Indy10的TIdHttp + TIdSSLIOHandlerSocketOpenSSL来实现SSL的数据传输。可是,有时候TIdHttp对象的Post()方法不会返回。线程就阻塞在那边。即使设置了超时也没有用处。有时候又一切正常。这个问题找了好久,都没发现问题所在。高手帮帮忙吧。谢谢。
  //SSL的创建
  FSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  FSSL.SSLOptions.Method := sslvSSLv23;
  FSSL.ReadTimeout := 2000;
  FSSL.ConnectTimeout := 2000;
  FSSL.SSLOptions.Mode := sslmClient;
  FHTTP := TIdHTTP.Create(nil);
  FHTTP.ReadTimeout := 2000;
  FHTTP.ConnectTimeout := 2000;
  FHTTP.IOHandler := FSSL;
  FHTTP.OnWorkBegin := OnMyWorkBegin;
  FHTTP.OnWork := OnMyWork;
  FHTTP.OnWorkEnd := OnMyWorkEnd;
procedure DownloadFile;
var
  vStream: TFileStream;
begin
  try
    vStream := TFileStream.Create(Path, fmCreate);
    {问题:便发生在以下的Post()方法中!有时能正常返回,有时无法返回。线程呈现阻塞状态。是不是因为服务器没响应啊,但是
    我有设置超时啊!该怎么办呢?}
    FHTTP.Post('https://10.11.12.48/weborb/Services/etim/rpc/fileDown.php', FParaList, vStream);
  finally
    vStream.Free;
  end;//try
end;