4
NSDictionary *customerDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"blah@blah.com", @"email", @"1", @"facebook", nil];
NSArray *customerArray = [NSArray arrayWithObjects:customerDictionary, nil];
NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:customerArray, @"customers", nil];
NSURLRequest *request = [sharedHTTPClient requestWithMethod:@"POST" path:@"/api/upload" parameters:parameters];
AFJSONRequestOperation *operation =
    [AFJSONRequestOperation JSONRequestOperationWithRequest:request
                                                    success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {}
                                                    failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {}];
[operation start];

在 Node.JS 后端,打印出正文显示:

{ customers: [ '1', 'blah@blah.com' ] }

预期的打印应该是:

{ customers: [{ facebook:'1', email:'blah@blah.com' }] }

我究竟做错了什么?

4

1 回答 1

7

来自 AFNetworking 维基:

如何在我的请求中发送 JSON 参数?

如果您使用的是 AFHTTPClient,请将 parameterEncoding 属性设置为 AFJSONParameterEncoding。该 HTTP 客户端上带有参数参数的任何方法现在都将传递的对象编码为 JSON 字符串,并适当地设置 HTTP 正文和 Content-Type 标头。

否则,您可以通过添加标头 Content-Type: application/json 并将请求的正文设置为 JSON 字符串来手动执行此操作。

于 2012-10-29T08:31:47.343 回答