idhttp GET HTTPS 出错

liu884 2009-02-26 09:31:03

idhttp1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
Memo1.Text := idhttp1.Get('https://passport.baidu.com/?login');

按网上教程我下载了ssleay32.dll和libeay32.dll,但是都无法加载。最后从别人的一个程序:http://www.de86.cn/tbbl/barlord.zip里面拷出来这两个同名DLL。
转而提示Read Timeout。访问普通http协议的网页也是如此。
测试环境:
WinXP SP3+Delphi 2007+Indy 10.1.5
...全文
770 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
兄弟们,我请求一Delphi问题。
IdHTTP下载文件时,我用的是:
IdHTTP.Get(URL, SMTream);
URL为:'https://cim.ubssecurities.com//download/C30001/2011Q3_Report_C30001.pdf'

注意,此处前缀为https,就不能下载,请问用什么方法解决?

windcowboy2 2009-06-16
  • 打赏
  • 举报
回复
先加入这个单元: IdSSLOpenSSLHeaders;

然后在你的get或者post前面,加入是如下语句:

IdSSLOpenSSLHeaders.Load;
idhttp1.Readtimeout := 0;

你再试试吧。

ajmxj 2009-03-13
  • 打赏
  • 举报
回复
学习一下,目前就碰到这样的问题
liu884 2009-03-01
  • 打赏
  • 举报
回复
问题解决了。我用的Indy10.1.5和unsigned大哥编译的9.8M的DLL。谢谢unsigned!长知识了!
liu884 2009-02-28
  • 打赏
  • 举报
回复
hiliuzixiong888@126.com
谢谢!
僵哥 2009-02-28
  • 打赏
  • 举报
回复
给个邮箱,我发一份OpenSSL 0.9.7m的DLL给你。
liu884 2009-02-28
  • 打赏
  • 举报
回复
Indy10.2.3在哪里可以下载?
hidelphi 2009-02-28
  • 打赏
  • 举报
回复
那用Indy10.2.3,对应版本的OpenSSL是0.9.8.h,这个版本的OpenSSL下载地址:http://indy.fulgan.com/SSL/
僵哥 2009-02-28
  • 打赏
  • 举报
回复
"Lbrary Path""Browsing Path"当中加上";D:\Working\Components\indy10.2.5\Lib\System;D:\Working\Components\indy10.2.5\Lib\Core;D:\Working\Components\indy10.2.5\Lib\Protocols"(具体替换为你自己的目录)

"Debug DCU Path"当中删除Indy相关目录
liu884 2009-02-28
  • 打赏
  • 举报
回复
但是我无法使用啊。可能是Indy的问题?
僵哥 2009-02-28
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 liu884 的回复:]
还有请教一下Indy到底如何安装?
D2007的Lib\indy10这个目录该怎么处理?
[/Quote]
我上面列出来的几个配置当中,先把原来的Indy相关的目录删除掉,然后再配置为你现有的目录。注意包含子目录。
僵哥 2009-02-28
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 liu884 的回复:]
你才发出去的?你又发了一个么?我没有收到啊
[/Quote]
不是又发了一个,之前给你的DLL,我当然知道需要msvcr90.dll,只是没有该DLL并不影响使用,所以就没理会这个DLL了。
liu884 2009-02-28
  • 打赏
  • 举报
回复
还有请教一下Indy到底如何安装?
D2007的Lib\indy10这个目录该怎么处理?
liu884 2009-02-28
  • 打赏
  • 举报
回复
你才发出去的?你又发了一个么?我没有收到啊
僵哥 2009-02-28
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 liu884 的回复:]
收到了,谢谢!
但是还是不能用。9.8的无法加载。9.7刚开始提示缺少MSVCR90.DLL,我从网上下载了一个放在根目录后转为提示:

Runtime Error!
Program: xxxx

R6034
An application has made an attempt to load the C runtime library incorrectly.
Please contact the application's support team for more information.

不知是indy的问题,Open SSL的问题还是运行库的问题?
[/Quote]
我测试过,没有MSVCR90.dll照样可以使用我才发出去的。9.8的需要Indy10.1.6
liu884 2009-02-28
  • 打赏
  • 举报
回复
而且我还是请教那两个DLL如何编译。
liu884 2009-02-28
  • 打赏
  • 举报
回复
我现想把Indy恢复到delphi自带的,怎么办呢?
suihu 2009-02-28
  • 打赏
  • 举报
回复
我用的是Indy10.
suihu 2009-02-28
  • 打赏
  • 举报
回复
uses
IdHTTP, IdHTTPHeaderInfo,IdMultipartFormData, IdGlobalProtocols, IdCoderMIME, IdSSLOpenSSL;
suihu 2009-02-28
  • 打赏
  • 举报
回复
var
sReturn: string;
Params: TStringStream;
FIdHttp: TIdHttp;
FSSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
begin
FIdHttp := TIdHttp.Create(self);
FSSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(self);
FSSLIOHandler.SSLOptions.RootCertFile := '根证书文件路径';
FSSLIOHandler.SSLOptions.CertFile := '公钥证书文件路径';
FSSLIOHandler.SSLOptions.KeyFile := '私钥证书文件路径';
FSSLIOHandler.SSLOptions.CipherList := 参数信息;
FSSLIOHandler.SSLOptions.VerifyDepth := 参数信息;
FSSLIOHandler.SSLOptions.VerifyDirs := 参数信息;
FSSLIOHandler.SSLOptions.Method := 参数信息;
FSSLIOHandler.SSLOptions.Mode := 参数信息;
FSSLIOHandler.SSLOptions.VerifyMode := 参数信息;
FIdHttp.IOHandler := FSSLIOHandler;
//参数根据实际情况设置。

FIdHttp.Request.ContentType := 'application/x-www-form-urlencoded';
FIdHttp.ReadTimeout := 1200000;
sReturn := FIdHttp.Post(sURI + Handler, Params);




end;
加载更多回复(13)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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