Отмена NSURLAuthenticationChallenge приводит к сбою NSURLConnection с ошибкой
Я использую AFNetworking
, Я подкласс AFURLConnectionOperation
и использую setWillSendRequestForAuthenticationChallengeBlock
переопределить обработку AuthenticationChallenge
, Я устанавливаю заголовок авторизации в каждом запросе, и сервер возвращает 401 для неправильных учетных данных.
Мой вариант использования: если я отправлю более определенного количества запросов с неправильными учетными данными, учетная запись будет заблокирована. Я пытаюсь предотвратить это, отменив запрос аутентификации, чтобы отправлялся только один запрос.
[challenge.sender cancelAuthenticationChallenge:challenge];
Но когда я делаю это, операция подключения завершается с ошибкой -1012 (NSURLErrorDomain kCFURLErrorUserCancelledAuthentication), и поэтому я теряю фактический код ошибки 401.
Есть ли способ отменить вызов, не разрывая соединение?
1 ответ
Отмена аутентификации по своей природе вызывает сбой запроса. Если вы хотите передать ошибку, чтобы получить тело страницы с ошибкой, вместо немедленного сброса соединения, вы можете продолжить без учетных данных, и оно передаст тело ошибки вашему приложению. В принципе:
[[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge];
Тем не менее, я не уверен, почему ваше приложение не может просто обработать kCFURLErrorUserCancelledAuthentication так, как оно будет обрабатывать 401.:-)