Delphi 使用Indy过帐时连接SSL时出错

Delphi 使用Indy过帐时连接SSL时出错,delphi,indy,delphi-5,idhttp,Delphi,Indy,Delphi 5,Idhttp,我试图使用Delphi5通过TidHTTPIndy在web服务上发布,每当我调用post方法时,它都会返回一个连接SSL错误异常的错误 这就是我试图运行的代码 FHandle := TIdSSLIOHandlerSocket.Create(nil); FHandle.SSLOptions.Method := sslvTLSv1; IdHttp.IOHandler := FHandle; IdHttp.Handle

我试图使用Delphi5通过TidHTTPIndy在web服务上发布,每当我调用post方法时,它都会返回一个连接SSL错误异常的错误

这就是我试图运行的代码

FHandle                        := TIdSSLIOHandlerSocket.Create(nil);
FHandle.SSLOptions.Method      := sslvTLSv1;
IdHttp.IOHandler               := FHandle;
IdHttp.HandleRedirects         := True;

IdHTTP.Request.CustomHeaders.Add('Content-Type: application/json');
IdHttp.Request.ContentType := 'application/json';

Load();

vAux := TMemoryStream.Create();
try
  WriteStringToStream(vAux, edJson.Text);
  vAux.Position := 0;
  vRet := IdHTTP.Post(edHost.Text, vAux);
finally
  vAux.Free();
end;
似乎无论我在CustomHeaders或任何其他属性中更改了什么,都会发生相同的错误

我尝试将开发方法更改为所有可用的方法,但无法使其工作


有什么建议让我试试吗?

我知道问题出在哪里了。TidsLioHandlerSocket组件的CertFile属性中有一个证书文件出错,我甚至没有意识到它在那里。在指出正确的证书文件后,一切都进展顺利。谢谢你们的见解

加强冗长?相同的代码是否适用于其他服务器?另一个客户端是否与您的应用程序查询的服务器工作在同一个服务器上?我没有放任何这些,因为我无法准确回答。我在其他服务器上尝试了相同的代码,但我认为这不是一个可靠的信息,因为这是一个完全不同的场景。是的,其他客户端可以在同一台服务器上发布,因为我正试图在一家全国性公司的API上发布,所以您需要获得有关异常的更多详细信息。。。因为存在大量可能的TLS错误,从证书/CA不匹配开始。。。如果你提供了你试图访问的远程URL,其他人可能会尝试提供给你一些见解。现在许多网站已经放弃了对TLS 1.0的支持,现在需要TLS 1.1+。您正在使用Indy 9,它不支持TLS 1.1+。你可能需要升级到Indy 10才能完成你想要的任务。请注意,不要使用CustomHeaders属性发送内容类型标题,只使用Request.ContentType属性。您正在向服务器发送2个内容类型标题,这可能会使其混淆。谢谢您的旁注,请记住这一点。我刚刚尝试在Delphi XE7上的测试应用程序上运行相同的代码,但所有可用版本都存在错误。