¿Existe una manera fácil de obtener el código de estado http en el bloque de fallas de AFHTTPClient?


94

Veo que hay una lista de códigos de estado http aceptados que puedo modificar, pero creo que sería más limpio si pudiera obtener el código de estado http en el bloque de fallas.

Ok, encontré la respuesta con el objeto de operación

failure:^(AFHTTPRequestOperation *operation, NSError *error){ 
        NSLog(@"error code %d",[operation.response statusCode]);
}];

Respuestas:


136

Ok, encontré la respuesta con el objeto de operación

failure:^(AFHTTPRequestOperation *operation, NSError *error){ 
       NSLog(@"error code %d",[operation.response statusCode]);
}];

Esto también podría ser útil[operation.request HTTPMethod]
defvol

2
Sé que esto es antiguo, pero @wilhelmbot - HTTPMethod le daría algo como GET / POST / PUT ... etc, probablemente no sea útil para verificar el estado de la respuesta.
shortstuffsushi

111

En las versiones más recientes de AFNetworking, puede recuperar el objeto de respuesta del error:

[[[error userInfo] objectForKey:AFNetworkingOperationFailingURLResponseErrorKey] statusCode]

Esto es útil si está haciendo un manejo de errores más arriba en la línea y no quiere pasar el objeto de respuesta.


Es posible que primero deba obtener el error subyacente. NSError *underlyingError = error.userInfo[@"NSUnderlyingError"]
Onato

19

Para AFNetworking 3.0 , utilice

failure:^(NSURLSessionTask *operation, NSError *error) {
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)operation.response;
    httpResponse.statusCode;
    NSLog(@"status code: %li", (long)httpResponse.statusCode);
}

13

NSInteger operationStatusCode = [operation.error code];

NSInteger httpStatusCode = operation.response.statusCode;

Si las solicitudes fueron canceladas / inaccesibles / timeout, httpStatusCodeserá siempre 0.

Alternativamente, puede identificar el problema entendiendo el operationStatusCode. Es un NSErrorObjeto.

  • Si no puede alcanzar / tiempo de espera / no hay red para procesar la solicitud, operationStatusCodeserá -1009.
  • Si cancela la cola de operaciones operationStatusCode, será -999.

Puede consultar todos los demás NSErrorcódigos y sus descripciones en la documentación de Apple


7

Pude obtener el código de estado con Swift 3:

((error.userInfo[AFNetworkingOperationFailingURLResponseErrorKey])
    as! HTTPURLResponse).statusCode

0

Es un trabajo para mí Agregue la siguiente línea a su solicitud

manager.requestSerializer = [serializador AFJSONRequestSerializer];

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.