Reemploop para AFJSONRequestOperation en AFNetworking 2.x

Estoy haciendo una aplicación básica de iPhone con requestes HTML siguiendo este tutorial.

El tutorial me hizo usar AFJSONRequestOperation en AFNetworking. El problema es que estoy usando la versión 2 de AFNetworking, que ya no tiene AFJSONRequestOperation.

Por lo tanto, por supuesto, este código (desde aproximadamente la mitad del tutorial, bajo el encabezado " Consulta de la API de búsqueda de iTunes Store ") no comstack:

NSURL *url = [[NSURL alloc] initWithString: @"http://itunes.apple.com/search?term=harry&country=us&entity=movie"]; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { NSLog(@"%@", JSON); } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo); }]; [operation start]; 

Mi pregunta es: ¿qué debo replace AFJSONRequestOperation para poder seguir trabajando con AFNetworking 2.x? He buscado en Google y descubrí que nadie más parece estar haciendo esta pregunta.

¿Podrías usar AFHTTPSessionManger? Algo así

 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.requestSerializer = [AFJSONRequestSerializer serializer]; [manager GET:[url absoluteString] parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) { NSLog(@"JSON: %@", responseObject); } failure:^(NSURLSessionDataTask *task, NSError *error) { // Handle failure }]; 

Otra alternativa podría ser utilizar AFHTTPRequestOperation y establecer de nuevo el responseSerializer en [AFJSONResponseSerializer serializer] . Algo así

 AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; operation.responseSerializer = [AFJSONResponseSerializer serializer]; [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation , id responseObject) { NSLog(@"JSON: %@", responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { // Handle error }]; 

Del artículo de NSHipster sobre AFNetworking 2 :

Uno de los avances de la nueva architecture de AFNetworking 2.0 es el uso de serializadores para crear requestes y respuestas de análisis. El layout flexible de los serializadores permite que se transfiera más lógica comercial a la capa de networking, y que el comportamiento pnetworkingeterminado incorporado previamente se pueda personalizar fácilmente.

En AFNetworking 2, los serializadores (los objects que convierten datos HTTP en objects Objective C utilizables) ahora son objects separados del object de operación de request.

AFJSONRequestOperation, etc., ya no existen.

De los documentos AFJSONResponseSerializer :

AFJSONResponseSerializer es una subclass de AFHTTPResponseSerializer que valida y decodifica las respuestas JSON.

Hay algunas forms de acceder a la API que mencionaste. Aquí hay uno:

 NSURL *url = [[NSURL alloc] initWithString:@"http://itunes.apple.com/search?term=harry&country=us&entity=movie"]; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"success: %@", operation.responseString); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"error: %@", operation.responseString); }]; [operation start]; 
    Intereting Posts