Sto provando a inviare parametri al mio server tramite POST, e funziona in generale, ma non riesco a capire come inviare JSON che contiene un array come uno dei parametri . Ecco cosa ho provato:AFNetworking send array nei parametri JSON di richiesta post
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:myURL]];
NSMutableArray *objectsInCart = [NSMutableArray arrayWithCapacity:[_cart count]];
for(NSDictionary *dict in _cart)
{
NSObject *object = [dict objectForKey:@"object"];
NSDictionary *objectDict = @{@"product_id": [NSString stringWithFormat:@"%d",[object productID]],
@"quantity": [NSString stringWithFormat:@"%d", [[dict objectForKey:@"count"] intValue]],
@"store_id": [NSString stringWithFormat:@"%d", [Store getStoreID]],
@"price": [NSString stringWithFormat:@"%.2f", [object price]]};
[objectsInCart addObject:objectDict];
}
NSError *error = nil;
NSString *cartJSON = [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:objectsInCart
options:NSJSONWritingPrettyPrinted
error:&error]
encoding:NSUTF8StringEncoding];
if(error)
{
NSLog(@"Error serializing cart to JSON: %@", [error description]);
return;
}
NSDictionary *parameters = @{@"status": @"SUBMITTED",
@"orders": cartJSON};
NSMutableURLRequest *orderRequest = [httpClient requestWithMethod:@"POST"
path:@"/app/carts"
parameters:parameters];
AFJSONRequestOperation *JSONOperation = [[AFJSONRequestOperation alloc] initWithRequest:orderRequest];
Tuttavia, si riceve un errore durante l'invio di questo JSON. Ogni suggerimento è molto apprezzato!
Non so cosa si aspetta il server, ma in genere, ogni elemento in JSON ha una chiave, incluso l'array. Stai semplicemente inviando l'array ora, senza una chiave per farlo. Prova 'NSString * cartJSON = @" 'prodotti':% @ ", [[NSString alloc] initWithData: [NSJSONSerialization dataWithJSONObject: objectsInCart options: NSJSONWritingPrettyStampa di errore: & error] encoding: NSUTF8StringEncoding]; – dirkgroten
Se si guarda il dizionario 'parameters', la chiave per l'array è' @ "orders" ' – Mason
ok, il mio male mi è mancato. Hai guardato i dati effettivi inviati sulla linea? Sono arrivato a valutare un'app come il proxy Charles per intercettare tutto il traffico dalla mia app ai server esterni. – dirkgroten