要跟銀行做接口,需要使用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格式證書的起始行和結束行:
PEM格式私鑰的起始行和結束行:
pfx格式的證書也可以通過OpenSSL.exe這個實用工具轉換成有效的PEM格式。
--------------------------------------------------------------------------------
亂碼問題也解決了
關鍵代碼就在這三行
RsltStrm:=TStringStream.Create('',TEncoding.UTF8);
IdHTTPClient.Post('www.abcc.com/abc',tmpStrList,RsltStrm);
tmpStrList.Text:=RsltStrm.DataString;
多謝各位朋友!!!
http://bbs.csdn.net/topics/350164870
