Отмена NSURLAuthenticationChallenge приводит к сбою NSURLConnection с ошибкой

Я использую AFNetworking, Я подкласс AFURLConnectionOperation и использую setWillSendRequestForAuthenticationChallengeBlock переопределить обработку AuthenticationChallenge, Я устанавливаю заголовок авторизации в каждом запросе, и сервер возвращает 401 для неправильных учетных данных.

Мой вариант использования: если я отправлю более определенного количества запросов с неправильными учетными данными, учетная запись будет заблокирована. Я пытаюсь предотвратить это, отменив запрос аутентификации, чтобы отправлялся только один запрос.

[challenge.sender cancelAuthenticationChallenge:challenge];

Но когда я делаю это, операция подключения завершается с ошибкой -1012 (NSURLErrorDomain kCFURLErrorUserCancelledAuthentication), и поэтому я теряю фактический код ошибки 401.

Есть ли способ отменить вызов, не разрывая соединение?

1 ответ

Отмена аутентификации по своей природе вызывает сбой запроса. Если вы хотите передать ошибку, чтобы получить тело страницы с ошибкой, вместо немедленного сброса соединения, вы можете продолжить без учетных данных, и оно передаст тело ошибки вашему приложению. В принципе:

[[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge];

Тем не менее, я не уверен, почему ваше приложение не может просто обработать kCFURLErrorUserCancelledAuthentication так, как оно будет обрабатывать 401.:-)

Другие вопросы по тегам