Obtenga el contenido XML con la biblioteca AFNetworking

ahora me gustaría usar la biblioteca AFNetworking para get contenido XML, así que uso este código

AFXMLRequestOperation *operation = [AFXMLRequestOperation XMLParserRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) { XMLParser.delegate = self; [XMLParser parse]; } failure:nil]; [operation start]; 

mi pregunta es saber si hay alguna forma de get el contenido de la respuesta xml (quiero imprimir el contenido xml con NSLog)

gracias por adelantado

Los datos sin procesar de la request siempre están disponibles en la propiedad responseData de la class de operación. Así es como lo mostrarías con NSLog :

 __block AFXMLRequestOperation *operation = [AFXMLRequestOperation XMLParserRequestOperationWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://legalindexes.indoff.com/sitemap.xml"]] success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) { NSLog(@"Parser: %@", XMLParser); NSLog(@"Raw XML Data: %@", [[NSString alloc] initWithData:operation.responseData encoding:NSUTF8StringEncoding]); } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLParser *XMLParser) { NSLog(@"Failure!"); }]; [operation start]; 

Dicho esto, la class estándar AFXMLRequestOperation usa NSXMLParser que es doloroso de usar. Si su carga no es demasiado grande y el performance no es un problema, le sugiero que utilice la nueva class AFKissXMLRequestOperation de Mattt , que hará el análisis por usted y expondrá un object compatible con NSXMLDocument más amigable :

 __block AFKissXMLRequestOperation *operation = [AFKissXMLRequestOperation XMLDocumentRequestOperationWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://legalindexes.indoff.com/sitemap.xml"]] success:^(NSURLRequest *request, NSHTTPURLResponse *response, DDXMLDocument *XMLDocument) { NSLog(@"XMLDocument: %@", XMLDocument); NSLog(@"Raw XML Data: %@", [[NSString alloc] initWithData:operation.responseData encoding:NSUTF8StringEncoding]); } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, DDXMLDocument *XMLDocument) { NSLog(@"Failure!"); }]; [operation start]; 

Creo que AFXMLRequestOperation es operación SAX. Es decir, la respuesta xml no se recibe en un solo grupo (sigue recibiendo hasta que se complete).

Puede imprimir los datos completos recibidos mediante string printing

 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 

o agregar una cadena a un ivar e imprimirlo en parserDidEndDocument

 - (void) parserDidEndDocument: (NSXMLParser *)parser 

Si está intentando probar la API para ver la devolución. Yo uso este metodo

 [[AFHTTPClient shanetworkingClient] postPath:url parameters:nil success:^( AFHTTPRequestOperation *operation , id responseObject ) { NSLog(@"responseobject: %@", [responseObject description]); } failure:^( AFHTTPRequestOperation *operation , NSError *error ){ NSLog(@"Handle failure for me"); } ]];