首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >iOS HTTPS 请求 Code=-999 "cancelled"

iOS HTTPS 请求 Code=-999 "cancelled"

作者头像
韦弦zhy
发布2020-02-18 15:38:46
发布2020-02-18 15:38:46
3.2K0
举报

使用AFN请求网络一直好好的,无论是http,还是https都正常,突然有一天服务器那边不知道调整了什么(可能是服务器SSL证书到期),每次请求都是返回:

Error Domain=NSURLErrorDomain Code=-999 "cancelled"

简书

因为一直使用的是正常申请的https证书,主要是现在用自建证书的公司越来越少了,除了部分个人为了玩。。。因为很多地方都提供免费的。。。所以基本iOS端从http切换到https并不需要什么工作直接换就行。 但是如果出现了如上错误可以简单的设置APP端直接信任证书就好:

方法一、一般就是设置AFHTTPSessionManagersecurityPolicy

OC:

代码语言:javascript
复制
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
AFSecurityPolicy *securityPolicy =  [AFSecurityPolicy defaultPolicy];
// 客户端是否信任非法证书
securityPolicy.allowInvalidCertificates = YES;
// 是否在证书域字段中验证域名
securityPolicy.validatesDomainName = NO;
manager.securityPolicy = securityPolicy

Swift:

代码语言:javascript
复制
let manager = AFHTTPSessionManager()
let securityPolicy = AFSecurityPolicy.default()
//客户端是否信任非法证书
securityPolicy.allowInvalidCertificates = true
// 是否在证书域字段中验证域名
securityPolicy.validatesDomainName = false
manager.securityPolicy = securityPolicy
方法二、如果你的网络请求类也和我一样是直接继承的AFHTTPSessionManager

那么也可以重写下面的方法来解决 OC:

代码语言:javascript
复制
- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler {
    //不校验证书 - 信任所有证书
    completionHandler(NSURLSessionAuthChallengeUseCredential, [[NSURLCredential alloc] initWithTrust:challenge.protectionSpace.serverTrust])
}

swift:

代码语言:javascript
复制
public override func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
    //不校验证书 - 信任所有证书
    completionHandler(.useCredential, URLCredential(trust: challenge.protectionSpace.serverTrust!))
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Error Domain=NSURLErrorDomain Code=-999 "cancelled"
  • 方法一、一般就是设置AFHTTPSessionManager的securityPolicy
  • 方法二、如果你的网络请求类也和我一样是直接继承的AFHTTPSessionManager
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档