AFHTTPSessionManager enviar request GET formatting json

Estoy intentando enviar una request al service web usando AFHTTPSessionManager

Aquí está mi problema: Quiero enviar la request de URL GET con los parameters en formatting JSON. Me gusta esto: http://api.mysite.com/v2/json/search?parameters= {"api_key": "YOUR_API_ KEY", "query": {"perpage": 50}}

He subclassado AFHTTPSessionManager. Esto es como se ve mi código:

+ (MyAPIClient *)shanetworkingClient { static MyAPIClient *_shanetworkingClient = nil; static dispatch_once_t oncePnetworkingicate; dispatch_once(&oncePnetworkingicate, ^{ _shanetworkingClient = [[self alloc] initWithBaseURL:[NSURL URLWithString:kBaseURLString]]; }); return _shanetworkingClient; } 

y el inicializador:

 - (instancetype)initWithBaseURL:(NSURL *)url { self = [super initWithBaseURL:url]; if (!self) { return nil; } self.responseSerializer = [AFJSONResponseSerializer serializer]; self.requestSerializer = [AFJSONRequestSerializer serializer]; return self; } 

Así es como lo hice:

 - (void)sendMyQueryWithSuccess: (void(^)(NSURLSessionDataTask *task, id responseObject))success andFailure:(void(^)(NSURLSessionDataTask *task, NSError *error))failure{ NSDictionary *params = @{@"api_key" : kAPIKey, @"query": @{@"perpage": @50}}; NSString *paramsstring = [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:params options:0 error:nil] encoding:NSUTF8StringEncoding]; NSString* path = [NSString stringWithFormat:@"search_sale?parameters=%@",paramsstring]; [self GET:path parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) { if (success) { success(task, responseObject); } } failure:^(NSURLSessionDataTask *task, NSError *error) { if (failure) { failure(task, error); } }]; } 

Sigo obteniendo esto:

* Fallo de aserción en – [AFJSONRequestSerializer requestWithMethod: URLString: parameters: error:], AFNetworking / AFNetworking / AFURLRequestSerialization.m: 277

* Terminar la aplicación debido a la exception no detectada 'NSInternalInconsistencyException', razón: 'Parámetro inválido no satisfactorio: URLString'

Entonces, ¿cuál es el problema aquí?

cuando imprimo el valor de "ruta" obtengo exactamente lo que quiero:

 search?parameters={"api_key":"SOME_API_KEY","query":{"perpage":10}} 

Muchas gracias por cualquier input.

Sí tu puedes:

 NSString *stringCleanPath = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

Tuve que usarlo para el descanso de parse.com, api y AFNetworking, y funciona perfectamente.

No puede enviar un dictionary como una request GET. Debe cambiar su API para inspeccionar los parameters como un dictionary POST. Lo que básicamente intenta hacer es enviar parameters de request de POST arriba.

O bien … Lo que puede querer hacer es cambiarlo a una cadena:

 NSString *params = [NSString stringWithFormat:@"\"api_key\":\"%@\",\"query\":{\"perpage\":%@}}", kAPIKey, @50]; 

Pero, sinceramente, eso es un poco desorderado.