使用https和SSL的Delphi 2007和Indy 10

时间:2012-11-08 08:09:16

标签: delphi indy

我删除了TIdHTTP和TIdSSLIOHandlerSocketOpenSSL,将IdHTTP的IOHandler设置为SSL处理程序,将TIdSSLIOHandlerSocketOpenSSL的模式设置为sllmClient。然后添加下面的按钮点击事件。我第一次从WhichFailedToLoad收到此错误。

enter image description here

显示,第二次按下按钮就可以了。 ssl dll位于.exe diretory中。

该服务可以在浏览器中正常运行并且正在生产中。为什么它第一次不起作用?

procedure TForm32.Button1Click(Sender: TObject);
var
  output : TMemoryStream;
begin
    output:=TMemoryStream.Create;
//    IdOpenSSLSetLibPath(
  try
    IdHTTP1.get('https://localhost:444/Folder/service.svc',output);
    output.position := 0;
    memo1.lines.LoadFromStream(output);
  except
    on exception do
    ShowMessage(WhichFailedToLoad());
  end;
end;

TIA

2 个答案:

答案 0 :(得分:3)

您应该更新到latest version of Indyssl dlls's,这应该完全摆脱异常。

答案 1 :(得分:3)

你必须使用一个非常陈旧且过时的Indy 10版本 - 该消息框中的大多数报告函数都有_Indy后缀。

Indy 9及更早版本和早期的Indy 10版本需要定制的OpenSSL DLL,这些DLL添加了Indy特定的函数来访问尚未在公共OpenSSL API中公开的内部OpenSSL数据。一旦该数据在后来的API版本中公开,Indy 10就更新为不再需要定制的DLL了。它现在按原样使用标准化的OpenSSL DLL。

因此,您需要追踪旧的自定义Indy OpenSSL DLL,或者需要升级到最新的Indy 10版本。