错误说明,AFNetworking发送Https的网络请求时,往往会遇到-1012错误
Error Domain=NSURLErrorDomain Code=-1012 "The operation couldn’t be completed. (NSURLErrorDomain error -1012.)" UserInfo=0x8d635f0 {NSErrorFailingURLKey=...URL...}
错误解决办法:
1、下载需要访问地址的cer证书或者别的格式转换出cer证书,放入mainbundle中
转换方法 openssl x509 -in 你的证书.crt -out 你的证书.cer -outform der
2、编写以下方法设置AFHTTPRequestOperationManager的securityPolicy属性,特别注意红字的两行代码
- (AFSecurityPolicy*)customSecurityPolicy
{
/**** SSL Pinning ****/
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"证书名" ofType:@"cer"];
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];
[securityPolicy setAllowInvalidCertificates:YES];
[securityPolicy setValidatesCertificateChain:NO];
[securityPolicy setPinnedCertificates:@[certData]];
[securityPolicy setSSLPinningMode:AFSSLPinningModeCertificate];
/**** SSL Pinning ****/
return securityPolicy;
}
2 设置manager
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
[mgr setSecurityPolicy:[self customSecurityPolicy]];
3发送请求:
NSDictionary *params = @{ 参数 };
[mgr GET:"URL字符串" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
成功代码
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
失败代码
}];
本文介绍了如何解决使用 AFNetworking 发送 HTTPS 请求时出现的-1012错误。主要通过导入 cer 证书到 main bundle,并设置 AFSecurityPolicy 的属性来实现 SSL Pinning 来确保安全连接。
4676





