delphi idhttp訪問https需要增加IdSSLIOHandlerSocketOpenSSL1

--轉自http://lhdeyx.blog.163.com/blog/static/318196972011101064240339/

 

加載https的站點頁面內容的時候記得在窗體上加上“IdSSLIOHandlerSocketOpenSSL1”

以及idhttp裏面IOHandler爲“IdSSLIOHandlerSocketOpenSSL1”

不然老報“IOHandler value is not valid.”錯誤。


dnspod API V2.0 就是用的https 用delphi開發客戶 只需要用idhttp就可以post

在界面上放一個TIdHTTP控件,命名爲IdHTTP1,再放一個TIdSSLIOHandlerSocket控件,命名爲

IdSSLIOHandlerSocket1,將IdHTTP1的IOHandler屬性設爲IdSSLIOHandlerSocket1,這樣就可以隨

意的Get,Post那些地址爲https開頭的網站了。
不過這樣仍然不行,當運行程序時,會報錯“Could not load SSL library”,這是因爲

TIdSSLIOHandlerSocket控件需要OpenSSL Library來配合,OpenSSL Library包含有兩個動態鏈接庫

libeay32.dll和ssleay32.dll。
OpenSSL Indy版下載 http://indy.fulgan.com/SSL/

或http://download.csdn.net/detail/netcreate/3498085(經測試,delphi 2010下的indy可以用)


將這個rar解包釋放兩個dll到你的程序目錄即可,但是我這樣做完以後post數據還是不行,發現

idhttp這裏有個版本的選項Method,默認的是sslvSSLv2,改爲sslvSSLv3,post返回數據正常,

yeah~仔細看了看,這個屬性是IdSSLIOHandlerSocket1的。

寫一個登錄HTTPS協議網站的工具,想用INDY實現
現在老是會報錯“Could not load SSL library”,可是我已經把ssleay32.dll和libeay32.dll兩個

庫文件拷進去了,是不是要專門支持D7的庫文件纔可以.

有類似的代碼也可以提供參考一下,非常感謝!

是的,在Indy10.0.5之前的版本所使用的OpenSSL是Indy特別的版本
Indy10.2.3之前僅支持OpenSSL的0.9.8以前的版本
Indy10.2.3及之後才支持…

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章