Idhttp Post https 连接 报“IOHandler value is not valid.”错误
今天研究阿里巴巴的对接,发现IDHTTP 的post 如果是 https 的连接就会报:“IOHandler value is not valid.”错误
加载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及之后才支持…
加载https的站点页面内容的时候记得在窗体上加上IdSSLIOHandlerSocketOpenSSL1
以及idhttp里面IOHandler为IdSSLIOHandlerSocketOpenSSL1
不然老报错IOHandler value is not valid.错..
uses
IdHTTP,
IdSSLOpenSSL,
SysUtils; Var
IdHTTP1 : TIdHTTP;
Src : string;
LHandler: TIdSSLIOHandlerSocketOpenSSL;
begin
try
IdHTTP1:=TIdHTTP.Create(nil);
try
LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
try
IdHTTP1.IOHandler:=LHandler;
Src:= IdHTTP1.Get('https://tools.usps.com/go/ZipLookupResultsAction!input.action?resultMode=0&companyName=&address1=1600+PENNSYLVANIA+AVE+NW&address2=&city=&state=Select&urbanCode=&postalCode=&zip=20500');
Writeln(Src);
finally
LHandler.Free;
end;
finally
IdHTTP1.Free;
end;
except on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
Readln;
end.
我自己用的:(这个估计非常完善了,非常好了,兼容一号店 对接乱码的问题)
function THtpApi.MyHtpPost(const MyPostUrl: string; const MyCanShuList: TStringList): string;
var
MyHtp: TIdHTTP;
MyStream: TStringStream;
MyIoHd: TIdSSLIOHandlerSocketOpenSSL;
begin
MyHtp := TIdHTTP.Create(nil);
MyStream := TStringStream.Create('', TEncoding.UTF8);
MyIoHd := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
try
MyHtp.IOHandler := MyIoHd;
MyHtp.Post(MyPostUrl,MyCanShuList,MyStream,IndyTextEncoding_UTF8);
Exit(MyStream.DataString);
finally
MyHtp.Free;
MyStream.Free;
MyIoHd.Free;
end;
end;
//2014-05-06 补充====真的需要这两个文件,我靠否则报下面的错误,因为我电脑上 delphi 根目录下有 所以就没有 报错,但是客户的电脑上没有=======



======================经过测试必须放到软件根目录下,任何名字的子目录都不行===================
后来发现很多软件 也都有 这个,靠 看来 以后 https 的post 就必须包含 这两个 dll 了。
---------------------------------------

目前主要是 阿里巴巴的 refreshToken 的时候 是https + post 方法 ,所以需要用到 这个,如果以后 阿里巴巴 不需要 refreshtoken 了就没有作用了,可以去掉了
Idhttp Post https 连接 报“IOHandler value is not valid.”错误的更多相关文章
- Delphi的idhttp报IOHandler value is not valid错误的原因[转]
出现这种问题的原因是由于访问的 URL地址为https或存在其跳转地址为https. 首先单纯使用idhttp是只能访问http,而https则需要搭配IdSSLIOHandlerSocketOpen ...
- Delphi的idhttp报IOHandler value is not valid错误的原因
出现这种问题的原因是由于访问的 URL地址为https或存在其跳转地址为https. 首先单纯使用idhttp是只能访问http,而https则需要搭配IdSSLIOHandlerSocketOpen ...
- https连接的前几毫秒发生了什么
在讨论这个话题之前,先提几个问题: 为什么说https是安全的,安全在哪里? https是使用了证书保证它的安全的么? 为什么证书需要购买? 我们先来看https要解决什么问题 (手机读者推荐移步ht ...
- CAS环境搭建-证书方式(https连接)
一.教程前言 1 教程目的:从头到尾细细道来单点登录服务器及客户端应用的每个步骤 2 单点登录(SSO):请看<CAS简介> 3 本教程使用的SSO服务器是Yelu大学研发的CAS(Cen ...
- tomcat7.0.55配置单向和双向HTTPS连接(二)
上一篇文章:tomcat7.0.55配置单向和双向HTTPS连接 只是简要的配置了一下HTTPS,还有许多问题没有解决,本篇来解决这些文件 首先按照这篇文章:Widows下利用OpenSSL生成证书来 ...
- tomcat7.0.55配置单向和双向HTTPS连接
HTTPS配置中分为单向连接和双向连接,单向连接只需要服务器安装证书,客户端不需要,双向连接需要服务器和客户端都安装证书 下面的配置都没有用CA签名来配置,都不能用于生产环境,实际配置中是需要CA的, ...
- idhttp访问HTTPS
idhttp访问HTTPS 访问一个 WEB 网站,如果采用 HTTP 的话,直接使用 TIdHTTP 这个控件,最简单的用法是: S := IdHTTP1.Get('www.qq.com'); 这里 ...
- LR录制https协议报证书错误,导航已阻止
使用IE浏览器录制https协议报证书错误,导航已阻止,修改如下配置文件:
- Mac 以太网连接 报无效的服务器地址 BasicIPv6ValidationError
Mac 以太网连接 报无效的服务器地址 BasicIPv6ValidationError 用Mac这么久,一直是用WiFi连接网络,没搞过以太网连接,我也是醉了 显然 Mac 不能像 Windows ...
- Python中HTTPS连接
permike 原文 Python中HTTPS连接 今天写代码时碰到一个问题,花了几个小时的时间google, 首先需要安装openssl,更新到最新版本后,在浏览器里看是否可访问,如果是可以的,所以 ...
随机推荐
- vue中form组件中上传el-upload(单、多附件上传,以及上传回显以及编辑不出现等问题)
https://blog.csdn.net/weixin_46565787/article/details/121934075?spm=1001.2101.3001.6650.2&utm_me ...
- BFS(广度优先搜索) poj3278
***今天发现一个很有趣的是,这道题应该几个月前就会了,但是一次比赛中总是WA,果断C++提交,然后就过了,然后就很无语了,G++不让过C++能过,今天又交一遍发现把队列定义为全局变量就都能过了,至于 ...
- 问题--之前必须结合fn+f1,f2等才能调节音量,亮度,现在只按f1,f2就调节,导致快捷键冲突
1.问题 问题如上 2.解决方式 问题原因: 热键默认打开,用fn加上esc开启了热键的默认设置 解决: 再按一次fn加上esc关闭热键的默认设置
- 【C++】const 常类型
常引用 格式:const 类型说明符 &引用名 注意:常引用所引用的对象不能修改 常对象 格式:类名 const 对象名 或 const 类名 对象名 注意:常对象其数据成员在生存期内不能修改 ...
- [IDEA] [SpringBoot] 项目所写的内容不能同步到编译出的文件中
错误原因: 不小心删除了 .yml 导致了,项目所写的内容不能同步到编译出的文件中,之后项目中的任何修改或添加的内容不能同步到编译出的文件中 解决方法 : 文件项目下运行mvn idea:module ...
- 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.11.30)
一.百度网盘SVIP超级会员共享账号 可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答. 我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免 ...
- K8S增加限制后的启动时间验证
K8S增加限制后的启动时间验证 背景 前段时间看了下JVM载linux上面的启动时间, 进行过一些验证. 最近想着能够验证一下K8S上面的启动相关的信息 所以就整理了一下. 虽然没有特别好的结论, 但 ...
- Oracle12c新增max_idle_time参数的学习与感触
Oracle12c新增max_idle_time参数的学习与感触 TLDR 其实任何软件出了新版本.readme 是很重要的. 尤其是数据库, 涉及到底层问题的. 比如这次遇到的Oracle的max_ ...
- [转帖]Linux运维常用150个命令
Linux运维常用150个命令 转载自:www.cnblogs.com/bananaaa/p/7774467.html 命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更 ...
- 【转帖】训练中文LLaMA大规模语言模型
https://zhuanlan.zhihu.com/p/612752963?utm_id=0 https://github.com/CVI-SZU/Linlygithub.com/CVI-SZU/ ...