idhttp返回乱码_IdHTTP设置SSL证书,乱码问题也解决了

要跟银行做接口,需要使用delphi来post数据,但对方提供的是https开头的网址,需要使用证书,对方已提供证书了,但是还是调用不成功,使用的是idhttp和TIdSSLIOHandlerSocketOpenSSL来post的,indy 版本是10.5.5, OpenSSL的dll版本是openssl-1.0.0-i386-win32。现在报的错是:“could not load certificate error:0906D06C:PEM routines:PEM_read_bio:no start line”。

对方提供了好几个证书,后缀名有:.cer,.pem,.pfx ,不知道到底要用哪一个,而且对方没有delphi版本的Demo,只有 java和C#的。网上查了两天资料,索然无获,不知道如何下手,才能通讯成功。

坛里那位朋友有这方面的开发经验,请不吝指点一二,多谢了!

设置以下两个属性

证书文件:

IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile

密钥文件:

IdSSLIOHandlerSocketOpenSSL1.SSLOptions.KeyFile

并在OnGetPassword事件当中返回密钥的保护密码即可。

PEM格式证书的起始行和结束行:

引用

-----BEGIN CERTIFICATE-----

......

-----END CERTIFICATE-----

PEM格式私钥的起始行和结束行:

引用

-----BEGIN RSA PRIVATE KEY-----

......

-----END RSA PRIVATE KEY-----

pfx格式的证书也可以通过OpenSSL.exe这个实用工具转换成有效的PEM格式。

引用

openssl.exe pkcs12 -in 证书.pfx -out 证书和密钥.pem

--------------------------------------------------------------------------------

乱码问题也解决了

关键代码就在这三行

RsltStrm:=TStringStream.Create('',TEncoding.UTF8);

IdHTTPClient.Post('www.abcc.com/abc',tmpStrList,RsltStrm);

tmpStrList.Text:=RsltStrm.DataString;

多谢各位朋友!!!

http://bbs.csdn.net/topics/350164870

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值