使用NSURLConnection忽略SSL证书错误

时间:2013-03-13 17:15:26

标签: cocoa nsurlconnection sendasynchronousrequest

我正在使用[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)]从Web服务提取数据,但Web服务器有自行颁发的证书,导致出现此错误:

SSL Error

使用以下方式显示错误:

NSAlert *a = [NSAlert alertWithError:error];
[a runModal];

有没有办法忽略这个错误并继续?

2 个答案:

答案 0 :(得分:6)

按照链接问题中的说明,我为NSURLConnection定义了一个虚拟接口:

@interface NSURLRequest (DummyInterface)
+ (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString*)host;
@end

在创建请求之前调用该方法:

[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];

这抑制了证书无效的错误。

答案 1 :(得分:0)

这可能会被Apple拒绝。使用NSConnectiondatadelegate的正确实现:

了解一下方法: Stackoverflow response to similar question