AFNetworking: bloque de fallas ejecutándose al volver con 200 y sin contenido

Estoy usando AFNetworking para manejar una request de restablecimiento de contraseña desde mi aplicación mobile a mi server de Rails.

La API está regresando: cabeza: ok (resulta en un 200)

Sin embargo, esto está causando que AFNetworking ejecute el bloque de falla cuando emita una request getPath .

Puedo hacer dos cosas para que se ejecute el bloque de éxito:

  1. tener el api return head :no_content (resulta en un 204)
  2. No establezca mi encabezado Accept en `application / json '

Parece que AFNetworking espera al less una matriz vacía cuando el código de estado es 200 y el encabezado Aceptar es application/json .

No tengo control total sobre la API, por lo que es posible tener un 200 sin contenido que aún active mi bloque de éxito, o es el 204 supuesto para ser utilizado para esta situación exacta, donde tiene éxito pero no se devolverá nada de ¿el server?

¡Gracias!

En lugar de utilizar los bloques de éxito y finalización de AFHTTPRequestOperation puede utilizar AFHTTPRequestOperation y tratar los códigos de respuesta usted mismo. Por ejemplo:

 // Setup HTTP client AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://website.com"]]; // Create the request NSURLRequest *request = [client requestWithMethod:@"GET" path:@"authenticate" parameters:params]; // Create an HTTP operation with your request AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; // Setup the completion block [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { switch (operation.response.statusCode) { case 200: // Do stuff break; default: break; } } failure:^(AFHTTPRequestOperation *operation, NSError *error) { switch (operation.response.statusCode) { case 400: // Do stuff break; default: break; } }]; // Begin your request [operation start];