Se llama al bloque de falla de respuesta de AFNetworking en lugar del bloque de éxito

Se llama al bloque de failure respuesta AFNetworking cuando obtengo el código de estado 200. ¿Cómo puedo hacer que el success sea ​​invocado en su lugar?

 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; [manager GET:@"http://128.199.94.58/test/bt/client_token.php" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { self.clientToken = responseObject[@"customerID"]; NSLog(@"Client Token received."); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { // Handle failure communicating with your server NSLog(@"Client Token request failed.%@",operation.responseString); NSLog(@"error code %ld",(long)[operation.response statusCode]); }]; 

Mira el valor del error . Le dirá por qué la connection falló. "Fracaso" en este context no tiene nada que ver con el código de estado. Volver "404" sigue siendo un "éxito". Fracaso significa que no pudo completar la operación.

use acceptableStatusCodes siguiente manera:

  AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; manager.requestSerializer = [TimeoutAFJSONRequestSerializer serializer]; NSMutableIndexSet* codes = [[NSMutableIndexSet alloc] init]; [codes addIndex: 200]; manager.responseSerializer.acceptableStatusCodes = codes; [manager GET:urlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { } failure:^(AFHTTPRequestOperation *operation, NSError *error) { }]; 

Ejecuto este código y funciona encontrar.

 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; [manager GET:@"http://128.199.94.58/test/bt/client_token.php" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:nil]; self.clientToken = json[@"customerID"]; NSLog(@"Client Token received."); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { // Handle failure communicating with your server NSLog(@"Client Token request failed.%@",operation.responseString); NSLog(@"error code %ld",(long)[operation.response statusCode]); }]; 

responde es:

 json: { customerID = "eyJ=="; } 

Puede ser un trabajo para ti.

Si revisa su error en bloque de falla, indique claramente que invalid content type . Debe configurar el tipo de contenido del administrador de la siguiente manera

 manager.requestSerializer = [AFJSONRequestSerializer serializer]; 

testing esto

 manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 

y en bloque de éxito

  success:^(AFHTTPRequestOperation *operation, id responseObject) { NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:manager.responseData options:kNilOptions error:nil]; self.clientToken = dic[@"customerID"]; NSLog(@"Client Token received."); }