didReceiveAuthenticationChallenge没有被调用

时间:2011-11-04 13:39:52

标签: ios5

我正在使用iOS sdk5.0。我正在使用NSURLConnection打一个链接并创建一个请求。但我的控制不是进入didReceiveAuthenticationChallenge方法。在iOS5.0中没有调用didReceiveAuthenticationChallenge吗?

3 个答案:

答案 0 :(得分:14)

根据NSURLConnectionDelegate

Docs
connection:canAuthenticateAgainstProtectionSpace:
connection:didReciveAuthenticationChallenge:
connection:didCancelAuthenticationChallenge:

已弃用,新代码应采用

connection:willSendRequestForAuthenticationChallenge

旧代表仍将被要求兼容性,但在处理身份验证挑战时会产生更多延迟。

答案 1 :(得分:1)

我遇到了同样的问题(请参阅上面的评论)。在我的搜索中,我遇到了这个要点:https://gist.github.com/1675763。我尝试了AUTH_NEW路径中的代码。代表仍未被召集。然后我注意到第40行的评论: “也许iOS 5无法支持DSA签名算法。”

我做了一些搜索,没有发现任何迹象表明这是一个限制是一个问题。最后,在绝望中,我改变了这一点。我正在使用java的keytool(Java的重新发明的openssl +版本)来生成我的自签名证书。它默认使用DSA。出于绝望,我用一面旗帜强迫它使用RSA。然后委托被调用,上面的要点中的代码工作。

我还没有看到任何说明你不能使用DSA的文档。 openssl默认情况下似乎使用RSA,所以使用它的人可能永远不会碰到这个。

简短说明:检查您的证书并确保其已使用RSA而不是DSA签名。

答案 2 :(得分:0)

我想强调克里斯威斯汀的观点。除此之外,我实际上创建了一个RSA密钥,但意外地将DSA密钥复制到了服务器。因此,如果有疑问,您需要使用-v(详细)命令来确保您已获得适当的证书。例如:

keytool -list -v -keystore <name of keystore here>