我正在努力让Indy使用SSL和安装在Ubuntu 11上的Lazarus中的IdHTTP组件。我知道我的代码适用于http帖子,因为如果我删除https并将其保留为只有http它可以工作。所以我认为这是SSL和indy的组件缺少Linux库。对于窗口我用来只包括两个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.so
和libssl.so
都在那里。
有什么想法让SSL与Lazarus和Indy合作进行IdHTTP后期操作?
编辑:好的,按照以下建议后我添加了例外:
on E: EIdHTTPProtocolException do
showmessage(htp1.ResponseText);
这给了我错误Error creating SSL context
。
EDIT2:我运行了一个strace,我在这里打开了SSL库的输出区域: http://pastebin.com/fL6tTSGg
答案 0 :(得分:1)
这很容易让我感到惊讶!哈哈
似乎我使用了错误的SSL方法。我必须将TidSSLioHandlerSocketOpenSSL.SSLOptions.Method
设置为sslvSSLv23
,它位于sslvSSLv2
。
现在一切正常:)