Подтвердить что ты не робот

AFNetworking 2.0 - неожиданная ошибка NSURLErrorDomain -1012

Мы столкнулись с следующей проблемой с нашим приложением, которое использует AFNetworking 2.0. При использовании метода AFHTTPRequestOperationManager GET мы получили сообщение об ошибке NSURLErrorDomain code -1012. Запрос, используемый HTTPS и сервером, не требует аутентификации пользователя. Запрос никогда не дошел до сервера.

Мы выполнили несколько тестов, и это первый раз, когда была произведена ошибка, и нам интересно, как эта ошибка может быть получена, потому что это не кажется актуальным.

Настройка AFHTTPRequestOperationManager:

httpOperationManager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL: 
        [NSURL URLWithString: HTTPS_URL)]];

httpOperationManager.responseSerializer = 
        [AFXMLParserResponseSerializer serializer];

[[AFNetworkActivityIndicatorManager sharedManager] setEnabled: YES];

ПОЛУЧИТЬ ЗАПРОС

AFHTTPRequestOperation *op =[httpOperationManager GET: 
        [NSString stringWithFormat:SOME_PATH] 
        parameters:nil 
        success:^(AFHTTPRequestOperation *operation, id responseObject) { 
            //code to setup NSXMLParser ...
        } 
        failure: ^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"error %@", [error localizedDescription]);
        }];
4b9b3361

Ответ 1

Я думаю, что вы уже решили проблему, но если вы пытаетесь пройти аутентификацию на сервере, у которого нет действительного сертификата, вы должны установить YES для свойства allowInvalidCertificates в свой AFHTTPRequestOperationManager объект:

[yourManager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"your_username" password:@"your_password"];
[yourManager.securityPolicy setAllowInvalidCertificates:YES];

Кроме того, как указано в @a1phanumeric, может потребоваться включить эту строку:

[yourManager.securityPolicy setValidatesDomainName:NO];

Приветствия.

Ответ 2

NSURLErrorDomain -1012 NSURLErrorUserCancelledAuthentication. (См. список кодов ошибок и поиск -1012.)

Вы заявляете, что "сервер не требует аутентификации пользователя". Но эта ошибка не вызывается, если это правда.

Возможные причины:

  • Ваш сервер ошибочно запрашивает авторизацию (ошибка сервера)
  • URL, сформированный с помощью HTTPS_URL и SOME_PATH, не соответствует ожидаемому, а другой сервер запрашивает авторизацию
  • Некоторый посредник (например, прокси-сервер или точка доступа) требует авторизации.

Некоторые советы по отладке:

  • Установите точки останова в реализации AFNetworking, чтобы увидеть, какой URL-адрес попадает
  • Настроить AFHTTPRequestOperationLogger, чтобы вы могли видеть фактический корпус запроса и ответ в журнале консоли
  • Сделайте тот же запрос с помощью curl или Advanced Rest Client и соблюдайте ответ сервера

Боковое примечание: я думаю, что [NSString stringWithFormat:SOME_PATH] бессмысленно - почему бы просто не использовать SOME_PATH?