哪位高手用过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都会报错的。

这个该如何处理呢?谢谢各位!!
...全文
463 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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 @麦子 好像懂。

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧