POSTを介してサーバーにパラメータを送信しようとしていますが、一般的には動作しますが、配列を含むJSONをパラメータの1つとして送信する方法がわかりません。ここで私が試したことは次のとおりです。AFNetworkingはPOST要求のJSONパラメータで配列を送信します
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];
ただし、このJSONを送信するときにエラーが発生します。どんな提案も大歓迎です!
サーバは何を期待しているのですか?しかし、通常、JSONのすべての項目は配列を含むキーを持っています。あなたはそれのためのキーなしで今すぐ配列を送信しているだけです。 "NSString * cartJSON = @" "products":%@ "、[[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:objectsInCart options:NSJSONWritingPrettyPrintedエラー:&error]エンコード:NSUTF8StringEncoding]を試してください。 – dirkgroten
'parameters'ディクショナリを見ると、配列のキーは' @ "orders" ' – Mason
です。あなたは実際に送られてきたデータを見ましたか?私はチャールズ・プロキシのようなアプリケーションを、私のアプリから外部サーバーへのすべてのトラフィックを傍受するために非常に価値があるようにしてきました。 – dirkgroten