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的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发之AFNetworking 3.0.4使用

ios开发之--swift下AFNetworking的使用

iOS开发网络数据之AFNetworking使用

iOS网络访问之使用AFNetworking

ios开发之--使用AFNetWorking 3.1.0 ,简单的请求封装类

ios 上传多张图片总结——IOS网络访问之使用AFNetworking