iOS Error Domain=NSURLErrorDomain Code=-999 "cancelled" 解决办法

发布时间:2019-06-29 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了iOS Error Domain=NSURLErrorDomain Code=-999 "cancelled" 解决办法脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

先上我这儿成功的代码

- (void)testATS {
    //先导入证书,找到证书的路径
    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"cert" ofTyPE:@"cer"];
    NSData *certData = [NSData dataWIThContentsOfFile:cerPath];
    
    //AFSSLPinningModeNone 这个模式表示不做 SSL pinning,只跟浏览器一样在系统的信任机构列表里验证服务端返回的证书。若证书是信任机构签发的就会通过,若是自己服务器生成的证书,这里是不会通过的。
    //AFSSLPinningModeCertificate 这个模式表示用证书绑定方式验证证书,需要客户端保存有服务端的证书拷贝,这里验证分两步,第一步验证证书的域名/有效期等信息,第二步是对比服务端返回的证书跟客户端返回的是否一致。
    //AFSSLPinningModePublicKey 这个模式同样是用证书绑定方式验证,客户端要有服务端的证书拷贝,只是验证时只验证证书里的公钥,不验证证书的有效期等信息。只要公钥是正确的,就能保证通信不会被窃听,因为中间人没有私钥,无法解开通过公钥加密的数据。
    
    AFSecuritypolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
    if (certData) {
        securityPolicy.pinnedCertificates = @[certData];
    }
    AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
    [sessionManager setSecurityPolicy:securityPolicy];
    sessionManager.responseSerializer = [AFJSONResponseSerializer serializer];
    sessionManager.responseSerializer.acceptableContentTypes = [sessionManager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/htML"];

    NSString *urlStr = @"https://huifang.tech/info.php";
    [sessionManager GET:urlStr parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
DDLOG(@"responseObject = %@", responseObject);
    } failure:^(NSURLSessionDataTask *task, NSError *error) {
        DDLog(@"error = %@", error);
    }];
}

因为之前使用了 AFSSLPinningModeCertificate 模式
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
改成现在的 AFSSLPinningModeNone 模式,解决问题。
因为我的证书是 Symantec 的 DV SSL 证书,所以 securityPolicy 的 allowInvalIDCertificates 和 validatesDomainName 属性都是默认值?。自签的还没试过。
参考链接:

  1. AFNetworking源码解析<三>

  2. stackoverflow

蛋疼的自己的 hexo 搭建的博客很久没弄,今天给弄成 404 了= =。。。先放这儿存个档吧。

2016-12-07 10:59:52更新:
博客好了Y(^o^)Y链接

脚本宝典总结

以上是脚本宝典为你收集整理的iOS Error Domain=NSURLErrorDomain Code=-999 "cancelled" 解决办法全部内容,希望文章能够帮你解决iOS Error Domain=NSURLErrorDomain Code=-999 "cancelled" 解决办法所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。