AFNetworking GET 正文中的参数

Posted

技术标签:

【中文标题】AFNetworking GET 正文中的参数【英文标题】:AFNetworking GET Parameters in body 【发布时间】:2015-06-13 15:37:21 【问题描述】:

我有以下代码,我想强制参数位于 GET 调用的主体中,而不是查询字符串的一部分

NSString * requestURL = [NSString stringWithFormat:kXXXBaseAPIURL,@"findfriends"];

NSString * lastCallTime = [[XXXCommon sharedInstance] lastTimestampForURL:requestURL];

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

AFHTTPRequestSerializer * serializer =[AFJSONRequestSerializer serializer];
[[XXXCommon sharedInstance].currentAccount addAuthorization:serializer];

[manager setRequestSerializer:serializer];
[manager.requestSerializer setValue:lastCallTime forHTTPHeaderField:@"If-Modified-Since"];

[manager GET:requestURL parameters:@@"Id":[XXXCommon sharedInstance].currentAccount.UserId, @"Details" : [[XXXCommon sharedInstance].contactFriends valueForKey:@"USER_KEY"]
     success:^(AFHTTPRequestOperation *operation, id responseObject) 

         NSLog(@"%@",responseObject);


      failure:^(AFHTTPRequestOperation *operation, NSError *error) 

         NSLog(@"Request failed with error: %@, %@ ", error, error.userInfo);

     ];

Details 参数是一个大数组,我不希望它们出现在查询字符串中,目前看起来像这样

http://xxx/api/findfriends?Details[]=%2B4823483943&Details[]=%2B234098234234&Details[]=%2B99999&Details[]=%2B77777777&Details[]=%2B999884&Details[]=%2B393949944

【问题讨论】:

【参考方案1】:

NSURLConnectionAFHTTPRequestOperation 的基础,它不允许在 GET 请求中包含正文。通常 GET 不允许使用正文,即使 curl 允许,并且通常在服务器上工作。

如果您想发送正文,请使用 POST 请求。

【讨论】:

谢谢,好点子,也许我应该把它写成 POST,即使我在请求数据。如果一切正常,我会试一试并将其标记为答案 成功了,只是我在询问信息时感觉有点不对,但你去吧 请求数据的 RESTFul 服务一般使用 GET,但不允许使用 POST。

以上是关于AFNetworking GET 正文中的参数的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 2.0 参数字典不适用于 GET 请求

如何使用 AFNetworking-2.0 执行 JSON 编码的 GET 请求?

AFNetworking 在 GET 请求的 JSON 参数中发送数组

使用 afnetworking 在 GET 方法的 url 中传递参数

请求正文中的 POST JSON 字符串(不在 URL-Form-Encoded 请求中) AFNetworking

如何使用 AFNetworking 为“PUT”请求设置数据?