唯一可能发生异常的方法是:
-
您已分配
TIdSSLIOHandlerSocketOpenSSL
组件到
TIdHTTP.IOHandler
财产。
它将尝试初始化openssl,即使您正在发出HTTP请求,因为任何HTTP请求都有可能重定向到HTTPS,因此indy在建立TCP连接时准备openssl,以防万一。
-
您尚未部署OpenSSL DLL(
libeay32.dll
和
ssleay32.dll
或与您的目标平台相同)的应用程序-或-您已部署
错误的
与您的indy版本不兼容的dll版本。
如果你要用
Tidssliohandlersocketopenssl
,您需要合适的DLL。Indy目前最多支持openssl 1.0.2,但不支持openssl 1.1.0或更高版本
on the TODO list
)
当Indy引发“无法加载SSL库”异常时,可以调用Indy的
WhichFailedToLoad()
功能在
IdSSLOpenSSLHeaders
找出故障是因为DLL未能加载到内存,还是因为DLL缺少INDY所需的导出。
还有一个
OpenSSLVersion()
功能在
IdSSLOpenSSL
报告已加载到内存中的OpenSSL版本的单元。
在您的情况下,不会发生从HTTP到HTTPS的重定向,但错误仍然在内部发生,这是
TIdHTTP
燕子,因为没有使用HTTPS。您的代码在运行时将看不到异常。但您的调试器会。