作者:dbvg2q | 来源:互联网 | 2022-12-29 11:47
我有一个在生产中运行良好的应用程序。但是,由于iOS 11-我收到此错误:
任务<51E07EF5-6F31-4E58-8818-7712CB3E49A6>。<20> HTTP加载失败(错误代码:-999 [1:89])任务<51E07EF5-6F31-4E58-8818-7712CB3E49A6>。错误完成-代码:-999
仅在iOS 11上会发生这种情况。另外,它也不是一致的。对同一URL的五个请求中,有两个将因此失败。在蜂窝连接上,它发生的频率较低,但仍然存在。
我正在使用AFNetworking,正如所说;直到iOS11,这才成为问题。
有任何想法吗?
更新以添加更多详细信息:
我正在使用带有有效证书的SSL固定。我的info.plist看起来像这样:
NSAppTransportSecurity
NSExceptionDomains
url.com
NSExceptionAllowsInsecureHTTPLoads
NSExceptionRequiresForwardSecrecy
NSIncludesSubdomains
像这样使用SSL固定:
NSString *pathToProdCert = [[NSBundle mainBundle]pathForResource:@"MY_CERT" ofType:@"cer"];
if(pathToProdCert){
manager.securityPolicy.pinnedCertificates = [NSSet setWithObjects[NSData dataWithContentsOfFile:pathToProdCert], nil];
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
}
更新:
针对评论:这是管理器的声明方式:
@property (nonatomic) AFHTTPSessionManager *manager;
通过我的Web服务类的init方法初始化管理器:
-(instancetype)initWithBaseUrl:(NSURL *)url {
self = [super init];
if (self){
self.manager = [[AFHTTPSessionManager alloc] initWithBaseURL:url];
self.manager.respOnseSerializer= [AFHTTPResponseSerializer serializer];
}
return self;
}
每个应用会话仅初始化一次。
更新:
根据要求,这是userInfo
里面的error
那回来:
NSErrorFailingURLKey =“ https:// MY_URL / PARAMS ”; NSErrorFailingURLStringKey =“ https:// MY_URL / PARAMS ”; NSLocalizedDescription =已取消;NSUnderlyingError =“错误域= kCFErrorDomainCFNetwork代码= -999 \”(空)\“ UserInfo = {_ kCFStreamErrorCodeKey = 89,_kCFStreamErrorDomainKey = 1}”;“ “ _kCFStreamErrorCodeKey” = 89; “ _kCFStreamErrorDomainKey” = 1;
经过更多测试,我注意到,如果我重新创建网络类,manager
则在每次网络调用时都在其中声明了,则永远不会发生此错误。