使用Chrome的Postman扩展我可以成功发布一些JSON。使用Charles检查请求,我看到请求数据如下:
{
"query": {
"term": {
"user_id": "12345"
}
}
}
当我尝试使用AFNetworking 2.4.1构建相同的请求时,我可以看到数据的格式为:
query[term][user_id]=12345
服务器当然会返回错误。
我错误地发布了POST请求的哪一部分?
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"query":@{@"term":@{@"user_id":@"12345"}}};
[manager POST:@"http://someURL" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"SUCCESS %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"FAIL: %@", error);
}];
答案 0 :(得分:1)
简短的回答是:
manager.requestSerializer = [AFJSONRequestSerializer serializer];
来自文档:
使用
requestWithMethod:URLString:parameters:
&创建的请求multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:
使用参数构造一组默认标头 此属性指定的序列化。默认情况下,此设置为AFHTTPRequestSerializer
的一个实例,用于序列化查询GET
,HEAD
和DELETE
请求的字符串参数,或 否则URL格式编码HTTP消息体。