允许使用AFNetworking的无效证书

时间:2013-12-28 12:53:48

标签: ios objective-c afnetworking-2

我一直在使用以下代码

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。我该怎么做才能使这项工作?

2 个答案:

答案 0 :(得分:25)

我通过在 [操作开始];

之前添加以下代码来解决此问题
AFSecurityPolicy *sec=[[AFSecurityPolicy alloc] init];
[sec setAllowInvalidCertificates:YES];
operation.securityPolicy=sec;

这是因为 AFHTTPRequestOperationManager 未连接到 AFHTTPRequestOperation 。因此设置管理器的安全证书不能在requestOperation上做魔术。因此,必须初始化并将其分配给 AFHTTPRequestOperation

希望这有助于某人:)

答案 1 :(得分:0)

据我所知。这是一个iOS 7问题。 Apple不允许与自签名证书网站进行通信。除非您将证书发送到设备并添加为可信证书列表。

支持对其他问题的评论:https://stackoverflow.com/a/20251011/753603

无法找到Apple提供的文件。