2012-11-19 125 views
0

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

但在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

是的你的权利,但我已经在谷歌上花了一个小时,并没有发现在拉伊为indy抓住例外。所以我不能显示它,如果我不知道显示什么。 – jfreak53

回答

1

这是那么容易就蜱我了!哈哈

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

现在一切正常:)