AFNetworking 3.0 - неверный код авторизации

Я использую AFHTTPSessionManager для получения запроса с заголовками авторизации;

В случае неправильного пользователя / пароля сервер по мнению почтальона возвращает тип контента: text/html с:

<!DOCTYPE html>
<html>
    <head>
        <title>Apache Tomcat/8.0.21 - Error report</title>
        <style type="text/css">H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}.line {height: 1px; background-color: #525D76; border: none;}</style> 
    </head>
    <body>
        <h1>HTTP Status 401 - Błąd podczas autentykacji</h1>
        <div class="line"></div>
        <p>
            <b>type</b> Status report
        </p>
        <p>
            <b>message</b>
            <u>Błąd podczas autentykacji</u>
        </p>
        <p>
            <b>description</b>
            <u>This request requires HTTP authentication.</u>
        </p>
        <hr class="line">
        <h3>Apache Tomcat/8.0.21</h3>
    </body>
</html>

К сожалению, NSURLSessionDataTask возвращает

NSHTTPURLResponse *test = (NSHTTPURLResponse *)task.response;
 NSLog (@"Status code, %i", test.statusCode); 

возвращает код состояния, 500

а также NSError

  NSString* errorResponse = [[NSString alloc] initWithData:(NSData *)error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] encoding:NSUTF8StringEncoding];
        NSLog(@"Error response: %@", errorResponse);

возвращает ответ об ошибке: {"error":{"code":"UNKNOWN_ERROR","details":null,"description":"Ошибка сервера","version":0}}

Это мой метод получения операции.

- (void)getOperationForAction:(NSString *)action
                   parameters:(NSArray *)params
                   completion:(id (^)(id json, BOOL success))completion {
    NSURL *url = [self apiUrlForAction:action params:params.mutableCopy];
    AFHTTPSessionManager *manager = [self sessionManager];

    [manager GET: url.absoluteString parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"JSON: %@", responseObject);

        if (completion) {
            completion(responseObject, YES);
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSString *responseString = [[NSString alloc] initWithData:(NSData *)error.userInfo[NSLocalizedRecoverySuggestionErrorKey] encoding:NSUTF8StringEncoding];
        if(responseString != nil && ![responseString isEqualToString: @""]) {
            NSData *JSONData = [responseString dataUsingEncoding: NSUTF8StringEncoding];
            id responseJSON = [NSJSONSerialization JSONObjectWithData:JSONData options: NSJSONReadingMutableContainers error:nil];
            if(responseJSON != nil) {

            }
        }

        NSHTTPURLResponse *test = (NSHTTPURLResponse *)task.response;
        NSLog (@"Status code, %i", test.statusCode);

        NSString* errorResponse = [[NSString alloc] initWithData:(NSData *)error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] encoding:NSUTF8StringEncoding];
        NSLog(@"Error response: %@", errorResponse);

        ApiError *apiError = [[ApiError alloc] initWithString:errorResponse error:nil];

        completion(apiError, NO);
    }];
}

Запрос обрабатывается корректно - проблемы 401 возникли, когда я намеренно использовал неверный логин / пароль авторизации только для проверки ошибок ответа. Проблема с неправильным кодом состояния, как упоминалось ранее.

@ Редактировать для

    NSHTTPURLResponse *test = (NSHTTPURLResponse *)task.response;
    NSLog (@"Status code, %i", test.statusCode);
    NSLog (@"Error code, %i", error.code);
    NSLog (@"Error domain, %@", error.domain);

Код состояния, 500 Код ошибки, -1011 Домен ошибки, com.alamofire.error.serialization.response

0 ответов

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