【发布时间】:2015-06-14 05:11:42
【问题描述】:
在今天的 iOS 8.3 更新之前,我的代码可以正常工作,但更新后服务器开始拒绝请求,因为它找不到 JSON 数据。
我发现 iOS 发送了错误的 application/x-www-form-urlencoded 文本(未正确编码,因为它似乎是 JSON 对象):
这是我期望发送的(以及在 8.2 上发送的):
正如我所说,这只发生在 iOS 8.3 上(我刚刚在 iOS 模拟器上尝试了 8.2 并且它可以工作)。
我认为问题出在以下几行中的一个类中:
NSData *bodyData = [NSJSONSerialization dataWithJSONObject:requestDict options:0 error:nil];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPBody = bodyData;
我检查了 Apple 文档,但没有显示为最近修改过的。
是否有人遭受同样的痛苦或知道会导致这种情况的原因?
谢谢。
【问题讨论】:
-
尽量标明http方法如
[request setHTTPMethod:@"POST"],最终,请求长度[request setValue:postLength forHTTPHeaderField:@"Content-Length"];和内容类型[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"]; -
它可以将
Content-Type标头与"application/json"值放在一起。似乎我将标题添加到NSURLSessionConfiguration而不是NSMutableURLRequest。谢谢!。 -
我将作为答案,以便我们可以关闭此问题
-
openradar.appspot.com/20489846 在这个问题上看起来像个雷达; QuickRadar 如果您想提交副本,那么复制雷达非常容易。
-
@LucaIaco 很抱歉重新提出一个老问题,但为什么是
Current-Type而不是Content-Type?我最近在我接管的代码库中看到了它,但找不到任何表明它做什么的东西?这两者是相似的吗?
标签: ios objective-c json post