-1

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

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

[challenge.sender cancelAuthenticationChallenge:challenge];

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

有没有办法在连接失败的情况下取消挑战?

4

1 回答 1

0

从本质上讲,取消身份验证会导致请求失败。如果您想传递失败以获取错误页面正文,而不是立即断开连接,您可以在没有凭据的情况下继续,它会将错误正文传递给您的应用程序。基本上:

[[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge];

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

于 2018-08-30T02:11:53.100 回答