Tôi đang cố gắng gửi thông số tới máy chủ của mình qua POST và nó hoạt động bình thường, nhưng tôi không thể tìm ra cách gửi JSON chứa mảng như một tham số . Dưới đây là những gì tôi đã thử:AFNetworking gửi mảng theo tham số JSON của yêu cầu bài
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];
Tuy nhiên, tôi gặp lỗi khi gửi JSON này. Bất kỳ đề xuất được nhiều đánh giá cao!
Tôi không biết máy chủ mong đợi điều gì, nhưng thông thường, mọi mục trong JSON đều có khóa, kể cả mảng. Bạn chỉ gửi mảng ngay bây giờ mà không cần chìa khóa cho nó. Hãy thử 'NSString * cartJSON = @" 'sản phẩm':% @ ", [[NSString alloc] initWithData: [NSJSONSerialization dataWithJSONObject: objectsInCart tùy chọn: NSJSONWritingPrettyPrinted error: & error] encoding: NSUTF8StringEncoding]; – dirkgroten
Nếu bạn nhìn vào từ điển 'tham số', khóa cho mảng là' @ "đơn đặt hàng" ' – Mason
ok, xấu của tôi tôi đã bỏ lỡ điều đó. Bạn có nhìn vào dữ liệu thực tế đang được gửi qua đường không? Tôi đã đến để đánh giá cao một ứng dụng như Charles proxy rất nhiều để chặn tất cả lưu lượng truy cập từ ứng dụng của tôi đến các máy chủ bên ngoài. – dirkgroten