0

我正在尝试让 Indy 使用安装在 Ubuntu 11 上的 Lazarus 中的 SSL 和 IdHTTP 组件。我知道我的代码适用于 http 帖子,因为如果我删除 https 并将其保留为只有 http 它可以工作。所以我认为这是 SSL 和 indy 的组件缺少 Linux 库。对于windows,我习惯于只包含两个DLL,libeay32.dll并且ssleay32.dll效果很好。

但在 linux 中,这似乎是另一回事。我唯一的代码是邮政编码:

IdHttp1.Post('url', StringList, ReturnStreamList);

就像我说的它在没有 https 的情况下工作得很好,但是当我尝试 SSL 时什么都没有发生。没有错误,因为我有try并且except可以捕捉,但我没有对捕捉做任何事情。

我确实安装了 OpenSSL,我还通过以下方式安装了以下内容apt

libcrypto++8
libcrypto++-dev
libssl-dev
libssl0.9.8

我去了/usr/lib两个文件libcrypto.solibssl.so都在那里。

有什么想法可以让 SSL 与 Lazarus 和 Indy 一起用于 IdHTTP 后期操作吗?

编辑:好的,在遵循以下建议后,我添加了异常:

on E: EIdHTTPProtocolException do
       showmessage(htp1.ResponseText);

这给了我错误Error creating SSL context

EDIT2:我运行了一个 strace,并在此处粘贴了打开 SSL 库的输出区域:http: //pastebin.com/fL6tTSGg

4

1 回答 1

1

这太容易了,它让我失望了!哈哈

似乎我对 SSL 使用了错误的方法。我必须设置TidSSLioHandlerSocketOpenSSL.SSLOptions.MethodsslvSSLv23,它是开着的sslvSSLv2

现在一切正常:)

于 2012-11-20T13:44:40.187 回答