使用AFNetworking 2发布嵌套的NSDictionary

时间:2014-09-10 01:17:14

标签: ios http post afnetworking afnetworking-2

使用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);
    }];

1 个答案:

答案 0 :(得分:1)

简短的回答是:

manager.requestSerializer = [AFJSONRequestSerializer serializer];

来自文档:

  

使用requestWithMethod:URLString:parameters:&创建的请求   multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:   使用参数构造一组默认标头   此属性指定的序列化。默认情况下,此设置为   AFHTTPRequestSerializer的一个实例,用于序列化查询   GETHEADDELETE请求的字符串参数,或   否则URL格式编码HTTP消息体。