我正在与验证密码的服务器通信,并在密码无效时返回 401 错误,以及指定失败尝试次数的 json 正文。每次验证失败时,服务器都会增加该数字。
我面临的问题是,当 NSURLConnection 收到 401 响应时,它会启动涉及这些委托方法的身份验证机制:
连接:canAuthenticateAgainstProtectionSpace:
连接:didReceiveAuthenticationChallenge:
如果我在canAuthenticate方法中返回 NO,则会发出一个新的相同请求。这将导致服务器第二次增加失败的尝试(这显然是不希望的),我会得到一个 401 响应(connection:didReceiveResponse:)
如果我在canAuthenticate方法中返回 YES,则调用didReceiveAuthenticationChallenge方法。如果我想停止第二个请求,我可以调用[challenge.sender cancelAuthenticationChallenge:challenge]。但是如果我这样做,我不会得到 401 响应,而是一个错误。
我发现无法捕获第一个 401 响应。有没有办法做到这一点?