从NSUrlConnection didReceiveAuthenticationChallenge提供有意义的错误

时间:2013-02-25 22:43:13

标签: iphone ios cocoa-touch cocoa

我正在使用Certificate and Public Key Pinning的OWASP样本。该示例使用random.orgrandom.org最近获得了新证书。这意味着connection:didReceiveAuthenticationChallenge:失败了。这是预期和良好的:))

但是,失败显示为“NSURLErrorDomain”,代码为-1012。这不是很有用,用户将无法用它做任何有意义的事情:

enter image description here

提供类似于“警告:标识网站的公钥已更改......”的文本消息会更好。

另一个小问题:在connection:didFailWithError:中,我无法判断-1012是否是由于钉扎失败或其他网络错误造成的。所以我想仅为证书失败提供消息,而不是其他-1012错误。

如何为[[challenge sender] cancelAuthenticationChallenge: challenge]的调用提供“丰富的错误信息”(在connection:didReceiveAuthenticationChallenge:失败时调用)。 NSURLConnectionDelegate Protocol ReferenceNSURLAuthenticationChallengeSender Protocol Reference未提及如何执行此操作。

1 个答案:

答案 0 :(得分:0)

尝试使用

NSString * alertMessage = [challenge.error localizedFailureReason];

获取人类可读的错误信息。

请参阅NSErrorNSURLAuthenticationChallenge的文档。