afhttprequestoperation afnetworking

afhttprequestoperation - afnetworking 3



¿Hay alguna manera fácil de obtener el código de estado http en el bloque de falla de AFHTTPClient? (6)

NSInteger operationStatusCode = [código de operación.error];

NSInteger httpStatusCode = operation.response.statusCode;

Si las solicitudes fueron canceladas / inalcanzables / expiradas, httpStatusCode siempre será 0 .

Alternativamente, puede identificar el problema entendiendo el operationStatusCode . Es un objeto NSError .

  • Si no puede alcanzar / agotar el tiempo / sin red para procesar la solicitud, operationStatusCode será -1009 .
  • Si cancela la cola de operationStatusCode , operationStatusCode será -999 .

Puede verificar todos los demás códigos NSError y sus descripciones en la documentación de Apple

Veo que hay una lista de códigos de estado HTTP aceptados que puedo modificar, pero creo que sería más claro si puedo 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]); }];


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

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


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á manejando errores más adelante en la línea y no quiere pasar el objeto de respuesta.


Es trabajo para mí Añadir la línea a continuación a su solicitud

manager.requestSerializer = [serializador de AFJSONRequestSerializer];


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

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


Para AFNetworking 3.0 , use

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