Я связываюсь с сервером, который проверяет пароль и возвращает ошибку 401 при недопустимом пароле, вместе с телом json, указывающим количество неудачных попыток. Это число увеличивается сервером при каждой неудачной проверке.
Проблема, с которой я столкнулся, заключается в том, что когда NSURLConnection получает ответ 401, он запускает механизм аутентификации, который включает следующие методы делегата:
connection: canAuthenticateAgainstProtectionSpace:
connection: didReceiveAuthenticationChallenge:
Если я верну NO в методе canAuthenticate, будет сделан новый идентичный запрос. Это приведет к тому, что сервер увеличит количество неудачных попыток во второй раз (что, очевидно, нежелательно), и я получу ответ 401 (connection: didReceiveResponse:)
Если я возвращаю YES в методе canAuthenticate, то вызывается метод didReceiveAuthenticationChallenge. Если я хочу остановить второй запрос, я могу вызвать [challenge.sender cancelAuthenticationChallenge: challenge]. Но если я это сделаю, то получу не ответ 401, а ошибку.
Я не нашел способа получить первый ответ 401. Есть ли способ сделать это?