【问题标题】:Can I use HTTPS connection without using a (libeay32.dll and ssleay32.dll) files?我可以在不使用(libeay32.dll 和 ssleay32.dll)文件的情况下使用 HTTPS 连接吗?
【发布时间】:2017-08-01 23:49:25
【问题描述】:

我确实希望答案是否定的,但也许我错了!

有没有什么办法不用DLL文件(libeay32.dll和ssleay32.dll)就可以使用HTTPS连接???

或者我可以将它们嵌入到我的应用程序中并建立 HTTPS 连接而不提取它们吗?

我在我的应用程序中使用了 indy 库 Idhttp...

【问题讨论】:

标签: delphi dll indy delphi-xe7


【解决方案1】:

有没有什么办法不用DLL文件(libeay32.dll和ssleay32.dll)就可以使用HTTPS连接???

您可以使用任何您想要的 SSL 库,您所需要的只是一个派生自 TIdSSLIOHandlerSocketBase 的包装器组件。然后您可以在访问 HTTPS url 之前将该组件分配给 TIdHTTP.IOHandler 属性。

Indy 为 OpenSSL (TIdSSLIOHandlerSocketOpenSSL) 提供了这样一个组件,但 Indy 并不专门依赖于 OpenSSL。您可以编写自己的组件,或使用第 3 方组件(如 Eldos SecureBlackBox 中提供的组件)。

即使您使用 OpenSSL,Indy 10 也有一个用于静态链接 OpenSSL 的 IdSSLOpenSSLHeaders_static.pas 单元。它主要仅适用于 iOS,但如果您有合适的 OBJ,它也可以适用于其他平台。

或者我可以将它们嵌入到我的应用程序中并建立 HTTPS 连接而不提取它们吗?

如果您使用 OpenSSL DLL,则需要将它们用作 DLL,这意味着先将它们提取出来。

【讨论】:

  • 好的,我尝试使用 TIdSSLIOHandlerSocketBase 并将其分配给 TIdHTTP.IOHandler 但此异常 Abstract Error 显示给我!
  • @jumior 那又怎样?随机尝试的东西通常以这种方式结束。您是否曾经在不理解的情况下对复杂系统进行了成功的编码?编程很难。不要小看它。不要以为不懂就可以写出正确的代码。
  • @junior.programmer 您不能在TIdHTTP.IOHandler直接使用TIdSSLIOHandlerSocketBase。它是一个抽象基类。再仔细阅读我的回答,我说过你必须使用派生自 TIdSSLIOHandlerSocketBase 的组件。 TIdSSLIOHandlerSocketOpenSSL 就是这样一个组件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多