gpt4 book ai didi

ios - iOS 8.3 更新后 NSMutableURLRequest 主体格式错误

转载 作者:技术小花猫 更新时间:2023-10-29 10:09:00 25 4
gpt4 key购买 nike

在今天的 iOS 8.3 更新之前,我的代码可以正常工作,但更新后服务器开始拒绝请求,因为它找不到 JSON 数据。

我发现 iOS 发送了一个错误的 application/x-www-form-urlencoded 文本(没有正确编码,因为它看起来是一个 JSON 对象):

Wireshark screenshot showing wrong data

这是我希望发送的内容(以及在 8.2 上发送的内容): Wireshark screenshot showing expected object

正如我所说,这只发生在 iOS 8.3 上(我刚刚在 iOS 模拟器上试过 8.2,它可以工作)。

我认为问题出在这些行中出现的类之一:

NSData *bodyData = [NSJSONSerialization dataWithJSONObject:requestDict options:0 error:nil];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPBody = bodyData;

我检查了 Apple 文档,没有一个是最近修改过的。

是否有人遭受同样的痛苦或知道什么会导致这种情况?

谢谢。

最佳答案

我在一个应用中也遇到过这个问题。

看起来这可能是 iOS 8.3 中引入的错误。从官方的Framework Reference中,提到了NSURLSessionConfigurationHTTPAdditionalHeaders属性:

This property specifies additional headers that are added to all tasks within sessions based on this configuration. For example, you might set the User-Agent header so that it is automatically included in every request your app makes through sessions based on this configuration.

据我了解,此配置中设置的 Content-Type 应自动包含在通过此 session 发出的每个请求中,自 8.3 以来不再如此。我已提交雷达。

更新:雷达已被设置为另一个雷达的“副本”,因此它更有可能是一个错误。

正如 Luca 指出的那样,解决方法是直接在请求上设置 Content-Type:

[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

来源: https://developer.apple.com/library/mac/documentation/Foundation/Reference/NSURLSessionConfiguration_class/#//apple_ref/occ/instp/NSURLSessionConfiguration/HTTPAdditionalHeaders

关于ios - iOS 8.3 更新后 NSMutableURLRequest 主体格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29528293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com