iOS-Objective-C

AF iOS11 HTTPS双向验证后闪退问题

2017-11-03  本文已影响34人  追沐

问题描述

iOS11 HTTPS做双向验证后,使用AF时闪退。不加全局断点的话奔溃到iOS11的系统库里面:

iOS11.png

加全局断点的话闪退到AF里:

AF.png

原因

两种情况

1、如果是HTTP类型的URL,初始化AFHTTPSessionManager对象的时候

 _httpSessionManager = [AFHTTPSessionManager manager];
_httpSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
[_httpSessionManager.requestSerializer setValue:@"text/plain" forHTTPHeaderField:@"Content-Type"];
self.timeoutInterval = NETWORK_REQUST_TIME_OUT;
_httpSessionManager.requestSerializer.timeoutInterval = self.timeoutInterval;

这样的iOS11 HTTPS接口直接会闪退

2、如果做HTTPS验证

//需要在建立 AFHTTPSessionManager的同时设置baseUrl
 _httpSessionManager = [[AFHTTPSessionManager manager] initWithBaseURL:[NSURL URLWithString:Connect_Host_Url]];
_httpSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
[_httpSessionManager.requestSerializer setValue:@"text/plain" forHTTPHeaderField:@"Content-Type"];
self.timeoutInterval = NETWORK_REQUST_TIME_OUT;
_httpSessionManager.requestSerializer.timeoutInterval = self.timeoutInterval; 
//https验证
[_httpSessionManager setSecurityPolicy:[DDRequestManager customSecurityPolicy]];

这样的话HTTPS不会有什么问题,但是HTTP接口就会直接闪退。初始化_httpSessionManager的时候用_httpSessionManager = [AFHTTPSessionManager manager]方法会导致HTTPS接口闪退。

解决

如果需要两者兼容:

//需要在建立 AFHTTPSessionManager的同时设置baseUrl
_httpSessionManager = [[AFHTTPSessionManager manager] initWithBaseURL:[NSURL URLWithString:Connect_Host_Url]];
//指定可接收服务器的数据的类型
_httpSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
//指定向服务器发送的数据的类型
[_httpSessionManager.requestSerializer setValue:@"text/plain" forHTTPHeaderField:@"Content-Type"];
self.timeoutInterval = NETWORK_REQUST_TIME_OUT;
if ([Connect_Host_Url containsString:@"https"]) {
    [_httpSessionManager setSecurityPolicy:[DDRequestManager customSecurityPolicy]];
}

不管是HTTP还是HTTPS _httpSessionManager = [[AFHTTPSessionManager manager] initWithBaseURL:[NSURL URLWithString:Connect_Host_Url]]方法都是可以的,HTTPS需要做下验证,HTTP不需要。这样就不会导致闪退问题了,兼容线上。

上一篇 下一篇

猜你喜欢

热点阅读