取消NSURLAuthenticationChallenge会导致NSURLConnection失败并显示错误

时间:2018-08-09 13:42:55

标签: ios nsurlconnection authenticationchallenge

我正在使用else。我已经将AFNetworking子类化,并且正在使用AFURLConnectionOperation来覆盖setWillSendRequestForAuthenticationChallengeBlock的处理。我在每个请求中都设置了Authorization标头,并且服务器为错误的凭据返回401。

我的用例是,如果我发送的一定数量以上的请求使用错误的凭据,该帐户将被锁定。我试图通过取消身份验证质询来防止这种情况,以便仅发送一个请求。

AuthenticationChallenge

但是,当我这样做时,连接操作将失败,并显示错误-1012(NSURLErrorDomain kCFURLErrorUserCancelledAuthentication),因此我丢失了实际的错误代码401。

有没有一种方法可以在不导致连接失败的情况下取消挑战?

1 个答案:

答案 0 :(得分:0)

取消身份验证的性质会导致请求失败。如果要传递故障以获取错误页面正文,而不是立即删除连接,则可以不使用凭据继续操作,它将错误正文传递给您的应用程序。基本上:

[[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge];

也就是说,我不确定为什么您的应用程序不能像对待401一样对待kCFURLErrorUserCancelledAuthentication。:-)