iOS使用HTTPS之AFNetworking
Posted Eric博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS使用HTTPS之AFNetworking相关的知识,希望对你有一定的参考价值。
公司是做P2P的,目前需要做安全审核备案,所以需要服务器和前段使用HTTPS。
以前针对ios9.0对ATS做过适配,允许http和https同时使用。
所以为了备案,必须使用https,需设置成YES。
项目使用的是单向认证
1.获取证书.cer
后台服务器运维工程师提供;或者自己使用chrome浏览器获取,步骤如下:
首先在浏览器中输入https://www.xxxx.cn你项目的网址,在网页中点击右键,弹出框点击查看:
之后效果如下:
然后在选择界面中的“View ce rcertificate”
2.将下载保存下来的证书.cer导入到工程中,然后设置AFNetworking代码:
- (AFSecurityPolicy *)customSecurityPolicy
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"ierfa" ofType:@"cer"];
NSData *cerData = [NSData dataWithContentsOfFile:cerPath];
if (cerData == nil)
return nil;
NSSet *setData = [NSSet setWithObject:cerData];
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
securityPolicy.allowInvalidCertificates = YES;
securityPolicy.validatesDomainName = NO;
[securityPolicy setPinnedCertificates:setData];
return securityPolicy;
AFHTTPSessionManager *manager = [[AFHTTPSessionManager manager] initWithBaseURL:[NSURL URLWithString:API_HEADER]];
// 设置超时时间
[manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];
manager.requestSerializer.timeoutInterval = kTimeoutInterval;
[manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];
//HTTPS证书认证
[manager setSecurityPolicy:[self customSecurityPolicy]];
[manager POST:urlstring parameters:paramDict progress:^(NSProgress * _Nonnull uploadProgress)
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject)
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
success(responseObject, hud);
failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error)
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
failure(error, hud);
];
以上是关于iOS使用HTTPS之AFNetworking的主要内容,如果未能解决你的问题,请参考以下文章