Indy TIdSSLIOHandlerSocketOpenSSL实现

时间:2015-12-02 01:08:50

标签: android delphi https indy delphi-xe7

我正在尝试从Android应用程序连接呼叫https://服务。我收到IOHandler值无效的错误。在搜索论坛后,我发现我需要创建一个TIDSSLIOHandlerOpenSSL对象并为此赋值。我是SSL协议的新手,需要一些关于如何将TIdSSLIOHandlerSocketOpenSSL库导入Delphi的帮助。我有libeay32.dll和 应用程序文件夹中的ssleay32.dll。我需要注册吗?一旦完成,我将如何在Delphi XE7中使组件可见?

提前感谢你。

1 个答案:

答案 0 :(得分:0)

  

我收到IOHandler值无效的错误。

您不能使用Indy的最新版本,因为一年前添加了新代码以帮助用户处理该错误:

New HTTPS functionality for TIdHTTP

  

在搜索论坛后,我发现我需要创建一个TIDSSLIOHandlerOpenSSL对象并为其赋值。

您需要创建一个TIdSSLIOHandlerSocketOpenSSL对象并将其分配给TIdHTTP.IOHandler属性,然后使用您需要的任何加密设置(SSL / TLS版本)配置IOHandler,证书等。)

  

我是SSL协议的新手,需要一些关于如何将TIdSSLIOHandlerSocketOpenSSL库导入Delphi的帮助。

无需导入任何内容。 TIdSSLIOHandlerSocketOpenSSL组件是Indy的一部分,与TIdHTTP组件相同。它们都可以在IDE的Component Palette和Tool Palette的Indy页面中找到,因此您可以在设计时将它们放在Form / Frame / DataModule上,或者您可以在运行时以可编程方式在代码中创建它们。

  

我在应用程序文件夹中有libeay32.dll和ssleay32.dll。我需要注册吗?

没有。 TIdSSLIOHandlerSocketOpenSSL在运行时动态加载它们,默认情况下使用OS搜索路径查找它们。操作系统首先查看应用程序文件夹。如果你需要将它们存储在其他地方,你可以在运行时调用Indy的IdOpenSSLSetLibPath()函数来告诉Indy它们的位置。

  

一旦完成,我将如何在Delphi XE7中使组件可见?

与执行任何其他组件的方式相同。如果您安装了Indy,则您已拥有TIdHTTPTIdSSLIOHandlerSocketOpenSSL组件。 Indy适用于VCL和FireMonkey项目。