在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开篇:公司之前一直使用http协议进行交互(比如登录等功能),但是经常被爆安全性不高,所以准备改用https协议。百度了一下资料,其实使用IdHttp控件实现https交互的帖子并不少,鉴于这次成功实现了功能,在此总结分享给大家。 开发环境:XE2 + Indy10 https服务协议:使用Json格式交互参数 Delphi控件:TIdhttp,IdSSLIOHandlerSocketOpenSSL(原生控件) 关键DLL:libeay32.dll,ssleay32.dll
为了封装我自己的功能,控件是我自己创建自己释放的,下面列出主要代码。 首先,设置Idhttp控件的参数: FIdHttp := TIdHTTP.Create(nil); IdSSLIOHandlerSocketOpenSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil); FIdHttp.IOHandler := IdSSLIOHandlerSocketOpenSSL; FIdHttp.HandleRedirects := True; FIdHttp.Request.ContentType := 'application/json';//设置交互方式为json格式 在这里IdSSLIOHandlerSocketOpenSSL.SSLOption.Method为默认值 sslvTLSv1(这个跟需要交互的HTTPS服务有关)。 其次就到交互了: FHttpsURL是需要交互的HTTPS地址,aEnctryPost是需要提交的具体内容,使用流方式提交。 aEnctryPost内容举例: {"username":"test","password":"1"} postStream := TStringStream.Create(aEnctryPost); try postStream.Position := 0; AEnctryRespose := FIdHttp.Post(FHttpsURL, postStream); ShowMessage(AEnctryRespose);//post后的返回内容 finally FIdHttp.Disconnect; FreeAndNil(postStream); end; 常见错误信息: Could not load SSL library:检查libeay32.dll,ssleay32.dll两个DLL的位置(一般放在exe同目录)、版本是否正确。 HTTP 1.1 / 415: 检查IdHttp.Request.ContentType := 'application/json' 这里设置的格式是否是要求的格式,有可能是XML格式。 转自:https://blog.csdn.net/yueyun889/article/details/79076664 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论