2013-03-13 65 views
0

我使用[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)]从Web服务中提取数据,但在Web服务器的SSL证书错误具有自颁发的证书,造成这种错误的出现:显示忽略与NSURLConnection的

SSL Error

错误使用:

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

有什么办法可以忽略这个错误并继续吗?

+1

[忽略证书错误与NSURLConnection的]的可能重复(http://stackoverflow.com/questions/3766755/ignoring-certificate-errors -with-nsurlconnection) – paulmelnikow 2013-03-13 23:59:55

+0

我觉得这个问题之前已经被问到过了,并且重新命名了前面的问题。希望它能解决你的问题。 – paulmelnikow 2013-03-14 00:00:50

+0

你是对的这是一个骗局(虽然我没有得到答案,因为我搜索了'sendAsynchronousRequest',所以这个问题是专门针对该方法的)。 – colincameron 2013-03-14 15:13:24

回答

5

继在链接的问题的说明,我定义为NSURLConnection的虚拟接口:

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

和创建请求之前调用的方法:

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

这抑制错误有关证书无效。

+3

这不是私人API吗? – Stavash 2013-07-24 11:38:26

+0

是的,但我的应用不在应用商店中,而是直接分发,所以我不需要担心拒绝。当然,我将在OS X的更高版本中改变API的风险,因为这是没有记录的。 – colincameron 2013-07-24 16:54:06

+0

很酷,只是想确保 – Stavash 2013-07-24 20:58:52

0

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

看到变通的办法: Stackoverflow response to similar question

+0

我无法使用'NSURLConnectionDelegate'方法,因为我正在调用'-sendAsynchronousRequest'。尽管如此,对于我的应用程序来说,这是一个有争议的问题,因为我通过购买服务器的SSL证书来解决问题。 – colincameron 2014-06-26 15:47:23