ios – 允许使用AFNetworking的无效证书

我一直在使用以下代码
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
operation.allowsInvalidSSLCertificate=YES;

现在我将AFNetworking更改为2.0的最新版本.使用AFHTTPRequestOperation,operation.allowsInvalidSSLCertificate不再工作.根据我使用的文件

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy.allowInvalidCertificates = YES;

我的请求代码

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];

[operation  setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation,id responSEObject) {

    NSLog (@"success: %@",operation.responseString);

}
                                  failure:^(AFHTTPRequestOperation *operation,NSError *error) {
                                      NSLog(@"error: %@",error.description);
                                  }
 ];

[operation start];
[operation waitUntilFinished];

但是,这对于需要证书的HTTPS不起作用.我该怎么办才能使这项工作?

解决方法

我在[操作开始之前]添加以下代码解决了这个问题;
AFSecurityPolicy *sec=[[AFSecurityPolicy alloc] init];
[sec setAllowInvalidCertificates:YES];
operation.securityPolicy=sec;

这是因为AFHTTPRequestOperationManager未连接到AFHTTPRequestOperation.所以设置管理员的安全证书在请求操作时不能做魔术.所以必须初始化并分配一个到AFHTTPRequestOperation.

希望这个帮助有人:)

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...