AFNetworking: no se puede get la cadena de respuesta de AFHTTPRequestOperation

¿Alguien?): Estoy teniendo un problema que me ha hecho rascarme la cabeza durante las últimas 2 horas, y es muy probable que sea una cosa muy simple y estúpida que me falta. Sigo recibiendo un error de construcción cuando invoco la cadena de respuesta de la operación @ AFNetworking … Como no hay NINGUNA PROPIEDAD …

Por favor, eche un vistazo a mi código y Explícame qué es lo que ensucié Esta vez: p .. Gracias 🙂


NSDictionary* paramDict = [NSDictionary dictionaryWithObjectsAndKeys:WebServicemd5Value, WebSermd5Variable, nil] ; AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:webServiceURL]]; [httpClient defaultValueForHeader:@"Accept"]; [httpClient postPath:@"method" parameters:paramDict success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"Response data: %@", responseObject); NSLog(@"Reponse String: %@", operation); 

// La operación de printing me mostrará el Diccionario de operación, incluido el campo de respuesta, // pero cuando llamo directamente a operation.response, el comstackdor no comstackrá, indicando que // "Propiedad no encontrada para AFHTTPRequestOperation" … MÁS EXTRAORDINARIO COSA SIEMPRE, ¿verdad?

  NSString* responseString = [NSString stringWithUTF8String:[responseObject bytes]]; //.. Rest of my Code.... }failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error retrieving data: %@", error); }]; 

Hernan, si espera un NSDictionary de una respuesta JSON, debería considerar usar AFJSONRequestOperation , porque obtiene un dictionary JSON en su callback de éxito. De todos modos, si desea get un dictionary de su responseObject , intente utilizar el siguiente código:

 NSError *error = nil; NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:&error]; if (error) { NSLog(@"Error serializing %@", error); } NSLog(@"Dictionary %@", JSON); 

Creo que la cadena de respuestas está dentro del object "operación", así que algo así como:

 ... }failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error retrieving data: %@", operation.responseString); }]; 

Al intentar recuperar contenido de meetup.com api utilizando AFNetworking (felicitaciones a Mattt T. por un excelente marco, por cierto) se topó con el mismo error: "La operación no pudo completarse (error de Cocoa 3840)". Me di count de que el problema que estaba teniendo era con los datos de respuesta que contenían un carácter sueco 'Ø', lo que provocaba el error de análisis. La solución era include el encabezado 'Accept-Charset: utf-8' en la initialization del cliente AFNetworking. ¡Fijo!

 - (id)initWithBaseURL:(NSURL *)url { self = [super initWithBaseURL:url]; if (!self) { return nil; } [self registerHTTPOperationClass:[AFJSONRequestOperation class]]; // Accept HTTP Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1 [self setDefaultHeader:@"Accept" value:@"application/json"]; [self setDefaultHeader:@"Accept-Charset" value:@"utf-8"]; return self; }