哪位高手用过IdHTTP?现在不能获取https的内容呢?

zhgwbzhd 2019-09-04 04:19:50
我使用bcb 2010,添加了IdHTTP1和IdSSLIOHandlerSocketOpenSSL1,将IdHTTP1的IOHandler设置为IdSSLIOHandlerSocketOpenSSL1。

测试了几个简单的http网站,没问题。
比如:
AnsiString MY_Web;
TStringStream *my_Stream;

my_Stream = new TStringStream();

MY_Web = "http://www.sohu.com";
IdHTTP1->Get(MY_Web,my_Stream);
Memo1->Lines->Add(my_Stream->DataString);

delete my_Stream;

这样可以获取信息的。
但是地址换成https://www.baidu.com或https://bbs.csdn.net/forums/BCBNetwork都会报错的。

这个该如何处理呢?谢谢各位!!
...全文
258 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhgwbzhd 2019-09-05
try { ... catch(Exception &e) { Memo1->Lines->Add(e.Message); } 获取到,异常信息为:HTTP/1.0 503 Service Unavailable
回复
呃,预编译的二进制版本在这里:https://wiki.openssl.org/index.php/Binaries
回复
换openssl高版本试试:https://www.openssl.org/source/
回复
zhgwbzhd 2019-09-04
感谢各位,目前是这样的。 1、添加了IdHTTP1控件,又添加了IdSSLIOHandlerSocketOpenSSL1。 2、设置IdSSLIOHandlerSocketOpenSSL1的SSLOptions内的Method为sslvTLSv1,Mode为sslmUnassigned。 3、设置IdHTTP1的IOHandler为IdSSLIOHandlerSocketOpenSSL1。 4、通过https://indy.fulgan.com/SSL/下载了openssl-1.0.2s-i386-win32.zip,得到了ssleay32.dll和libeay32.dll,把这两个复制到应用的目录。 5、目前发现https://bbs.csdn.net和https://www.sogou.com通过get方式可以得到返回信息。 但是https://www.baidu.com,https://weixiao.qq.com就会异常报错了。
回复
zhgwbzhd 2019-09-04
引用 2 楼 早打大打打核战争 的回复:
你需要uses IdSSLOpenSSL; 然后带上带上open ssl的DLLs,indy的作者很早就说过,由于美国出口管制的限制,他没办法把SSL支持写在indy里,所以需要外部DLLs(从美国之外的网站下载)
可以给出明示么?
回复
你需要uses IdSSLOpenSSL; 然后带上带上open ssl的DLLs,indy的作者很早就说过,由于美国出口管制的限制,他没办法把SSL支持写在indy里,所以需要外部DLLs(从美国之外的网站下载)
回复
ooolinux 2019-09-04
ccrun.com 官方技术群 2602062 @麦子 好像懂。
回复
发帖
网络及通讯开发
创建于2007-08-02

1299

社区成员

C++ Builder 网络及通讯开发
申请成为版主
帖子事件
创建了帖子
2019-09-04 04:19
社区公告
暂无公告