简单实用https注意事项
https处理:【此文不涉及自建证书和双向验证,以购买的DV级别证书为例】
一、安卓以OKHttp为例,加载https接口可以正常请求!
二、iOS以AFNetWorking(3.1.0)为例,加载https接口可以正常请求【ATS采用】!
1、接口
可能会出现返回值为NULL的情况,实则和数据解析有关,AF3.1.0为例
manager.responseSerializer = [AFHTTPResponseSerializer serializer]
以上参数表示保留AF的原有数据即data数据,而我们平常最常用的则是转化为json,
如果不设置参数表示AF的默认解析,可获取正常的json数据 用不到我们去解析数据
如果设置参数表示AF保留原有data数据,需要我们解析数据,
①、上传图片注意是上传图片我们必须保留原有数据我们要上传的是图片的data数据,所以AF要设置此参数,返回的数据也是data数据,需要我们去解析则会用到数据解析
②、正常的接口请求,那么返回的data数据,需要我们去解析则会用到数据解析
对于https AF3.1.0需要设置此参数,那么数据的解析我们可用系统的解析方法
responseObject = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
2、web加载
web加载以UIWebView为例,也可正常加载。
在实际测试中dv级别的证书正常加载https的网页,但是在测试百度https://www.baidu.com/网页时出现不能加载现象(猜测:应该和证书级别和tls级别有关,没做验证)。
工程测试的解决办法需要添加域名白名单,可以正常加载
<dict> <key>baidu.com</key> //添加要加载的白域名加载web页面 <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSExceptionRequiresForwardSecrecy</key> <false/> <key>NSIncludesSubdomains</key> <true/> </dict> </dict>
测试网址
web地址:https://api.sdangao.com/v2/web/score
json接口:https://api.sdangao.com/v2/public/jobs
图片链接:https://api.sdangao.com/data/upload/avatar/u729/2016-12-19/585745692a0f4.jpg
目前https,能力所限,能提到的注意事项就这几点,希望大家能提供更好的解决办法!
以下链接来自网上资料
https证书购买: