美文网首页AFN_网络
关于使用AFNetWorking访问HTTPS协议后台数据

关于使用AFNetWorking访问HTTPS协议后台数据

作者: 涂鸦的熊猫 | 来源:发表于2016-04-07 14:30 被阅读676次

一.首先,我们要获取到https的签证证书,这个东西可以找后台的兄弟要。如果想要例如baidu,12306之类的证书,进行如下操作:

获取网络上https的签证

点击了“证书信息”,会弹出如下证书信息的弹窗:

证书信息

将证书直接拖到桌面即可。这样你就获得了https的证书。如果你的证书是后台给的,那有可能是.pem格式,这种格式xcode是无法识别的,双击该证书,进入钥匙串将刚刚加入的证书导出,使用.cer格式。然后将cer格式的证书添加入你的工程。


二.接下来,你需要创建AFHTTPSessionManager对象,当然,前提是你以导入AFNetWorking的框架和头文件。

1.创建AFHTTPSessionManager对象:

AFHTTPSessionManager *httpsManager = [AFHTTPSessionManager manager];

2.设置解析格式

httpsManager.responseSerializer= [AFHTTPResponseSerializer serializer];

NSSet *aset = [[NSSetalloc]   initWithObjects:@"application/json",@"text/json",@"text/javascript",@"text/html",@"text/plain",nil];

httpsManager.responseSerializer.acceptableContentTypes= aset;

3.获取证书

NSString*cerPath = [[NSBundle mainBundle]pathForResource:@"https.cer"ofType:nil];

NSData *certData =[NSData dataWithContentsOfFile:cerPath];

NSSet *certSet = [[NSSetalloc]initWithObjects:certData,nil];

4.创建AFSecurityPolicy对象并为其添加一些证书设置

AFSecurityPolicy *securityPolicy =[AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];//这一句是设置安全策略是由什么验证的,是一个枚举值,而我当前的值为证书验证。

securityPolicy.allowInvalidCertificates=YES;//这个一属性是设置无效证书是否认同,yes为认同,NO为不认同

securityPolicy.validatesDomainName=NO;//设置证书中的域名下的子域名是否排除,一般选择no

5.添加证书到安全策略中,并为AFHTTPSessionManager设置安全策略

[securityPolicy  setPinnedCertificates:certSet];//添加证书

httpsManager.securityPolicy= securityPolicy;

6.之后就可以发送网络请求了。


三.iOS9及其以上的,切是未认证的自签证书,要在info.plist中加如下面的代码:

<key>NSAppTransportSecurity</key>

<dict>

           <key>NSAllowsArbitraryLoads</key>

           <true/>

</dict>

相关文章

网友评论

本文标题:关于使用AFNetWorking访问HTTPS协议后台数据

本文链接:https://www.haomeiwen.com/subject/hhwmlttx.html