Lazarus Indy SSL IdHTTP

时间:2012-11-19 23:37:54

标签: linux ubuntu openssl indy lazarus

我正在努力让Indy使用SSL和安装在Ubuntu 11上的Lazarus中的IdHTTP组件。我知道我的代码适用于http帖子,因为如果我删除https并将其保留为只有http它可以工作。所以我认为这是SSL和indy的组件缺少Linux库。对于窗口我用来只包括两个DLL,libeay32.dllssleay32.dll,它工作正常。

但在linux中它似乎是另一个故事。我唯一的代码是邮政编码:

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

就像我说没有https它的效果很好,但是当我尝试SSL时根本没有任何事情发生。没有错误,因为我有tryexcept要抓住,但我没有采取任何措施。

我安装了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

1 个答案:

答案 0 :(得分:1)

这很容易让我感到惊讶!哈哈

似乎我使用了错误的SSL方法。我必须将TidSSLioHandlerSocketOpenSSL.SSLOptions.Method设置为sslvSSLv23,它位于sslvSSLv2

现在一切正常:)