我正在尝试让Indy使用安装在Ubuntu11上的SSL和Lazarus中的IdHTTP组件。我知道我的代码对于http post是正确的,因为如果我删除https,只留下http,它就可以工作了。所以我认为是SSL和indy的组件缺少Linux库。对于window,我习惯于只包含两个动态链接库,libeay32.dll和ssleay32.dll,它工作得很好。
但在linux中,这似乎是另一回事。我唯一的代码是post代码:
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在IdHTTP post操作中与拉撒路和印地一起工作需要做些什么吗?
编辑:好的,在遵循下面的建议之后,我添加了例外:
on E: EIdHTTPProtocolException do
showmessage(htp1.ResponseText);这给出了错误Error creating SSL context。
EDIT2:我运行了一个strace,并粘贴了输出区域,其中打开了SSL库:http://pastebin.com/fL6tTSGg
发布于 2012-11-20 21:44:40
这太容易了,我都烦死了!哈哈
似乎我对SSL使用了错误的方法。我必须将TidSSLioHandlerSocketOpenSSL.SSLOptions.Method设置为sslvSSLv23,它在sslvSSLv2上。
现在一切都正常了:)
https://stackoverflow.com/questions/13464361
复制相似问题