使用AFNetworking 2.5.0,我们一直很难通过SSL保护应用程序的网络连接.
我们使用自签名证书颁发机构,并使用固定证书实施自定义安全策略.
我们已经测试了AFNetworking提供的很多配置,但到目前为止还不幸运.我们收到的错误消息是:
2015-01-05 19:03:07.191 AppName [9301:319051]更新用户旅程时出错.错误:错误域= NSURLErrorDomain代码= -1012"操作无法完成.(NSURLErrorDomain错误-1012.)"UserInfo = 0x7ae056b0 {NSErrorFailingURLKey = https://api.XXX.com/XXX/XXX/,NSErrorFailingURLStringKey = https://api.XXX.com/XXX/XXX/ }
我们的证书适用于其他客户端,如cURL和Android.使用HTTP时,我们的实现也非常好.
是否有人知道与固定证书和AFNetworking相关的任何问题?如果是的话,我们非常感谢您提供的任何指示.
以下是实施的一部分:
+ (AFSecurityPolicy*)customSecurityPolicy {
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"der"];
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
[securityPolicy setAllowInvalidCertificates:NO];
[securityPolicy setValidatesCertificateChain:NO];
[securityPolicy setPinnedCertificates:@[certData]];
return securityPolicy;
}
+ (AFHTTPRequestOperationManager*)customHttpRequestOperationManager {
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy = [self customSecurityPolicy]; // SSL
return manager;
}
+(void)getRequestWithUrl:(NSString*)url success:(void(^)(AFHTTPRequestOperation *operation, id responseObject))success failure:(void(^) (AFHTTPRequestOperation *operation, NSError *error))failure {
[[UIApplication sharedApplication] …Run Code Online (Sandbox Code Playgroud) 当我第一次在当天启动应用程序时,我总是得到上述问题.当我第一次启动应用程序时,我进行服务器调用以获取一些数据,然后播放动画视频.服务器调用与主UI线程位于不同的线程中.它与Network Reachability或动画视频有关吗?我认为第一部分是主要问题,但无法一直重现.
有没有人遇到过这个问题?
下面是我第一次启动应用程序时的代码.
override func viewDidLoad() {
super.viewDidLoad();
self.navigationController?.navigationBarHidden = true;
self.view.backgroundColor = UIColor.whiteColor();
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { () -> Void in
Items.setup(); //AFNetworking call
};
animationViewController.delegate = self;
animationViewController.view.autoresizesSubviews = true;
animationViewController.view.autoresizingMask = [.FlexibleLeftMargin, .FlexibleRightMargin];
animationViewController.view.center = CGPointMake(self.view.bounds.size.width / 2, self.view.bounds.size.height / 2);
self.view.addSubview(animationViewController.view);
}
Run Code Online (Sandbox Code Playgroud) Xcode 9,其他运行良好的模拟器和iPhone X出现此错误信息,AFNetworking无法正常工作.
ios ×2
afnetworking ×1
ios11 ×1
iphone ×1
iphone-x ×1
reachability ×1
ssl ×1
swift ×1
xcode9 ×1