URLSession 配置的 header 设置仅适用于 PUT,不适用于 POST
URLSession configuration's header setting only work for PUT, not for POST
我正在使用 NSURLSession default session 使用以下代码
var defaultSession : NSURLSession {
var config = NSURLSessionConfiguration.defaultSessionConfiguration()
config.HTTPAdditionalHeaders = [
// FIXME: for POST this line doesn't work, but for PUT it works, this could be a bug.
"Content-Type": "application/json"
]
return NSURLSession(configuration: config, delegate: self.delegate, delegateQueue: NSOperationQueue.mainQueue())
}
但似乎 content-type: application/json 设置仅适用于 PUT 方法,这是服务器响应
POST application/x-www-form-urlencoded /api/v2/DevHiin 400 24.815 ms - 11
PUT application/json /api/v2/DevBoost 201 51.151 ms - 65
当我为每个 POST 请求添加 header 设置时,它再次起作用。
req.addValue("application/json", forHTTPHeaderField: "Content-Type")
服务器
POST application/json /api/v2/DevHiin 201 19.925 ms - 95
PUT application/json /api/v2/DevBoost 201 23.729 ms - 65
但这真的不是一个完美的解决方案,而且整个代码真的很奇怪,有没有人有见识告诉我这是怎么回事?
非常感谢!
看起来 iOS 8.3 在 NSURLSessionConfiguration 中引入了一个错误,因此指定的 Content-Type 不被接受(有关类似问题,请参阅 )。在我们实施后端解决方法之前,这使我们的整个应用程序陷入瘫痪。我们还向每个可变 POST 请求添加了 Content-Type,就像您描述的那样。
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
我正在使用 NSURLSession default session 使用以下代码
var defaultSession : NSURLSession {
var config = NSURLSessionConfiguration.defaultSessionConfiguration()
config.HTTPAdditionalHeaders = [
// FIXME: for POST this line doesn't work, but for PUT it works, this could be a bug.
"Content-Type": "application/json"
]
return NSURLSession(configuration: config, delegate: self.delegate, delegateQueue: NSOperationQueue.mainQueue())
}
但似乎 content-type: application/json 设置仅适用于 PUT 方法,这是服务器响应
POST application/x-www-form-urlencoded /api/v2/DevHiin 400 24.815 ms - 11
PUT application/json /api/v2/DevBoost 201 51.151 ms - 65
当我为每个 POST 请求添加 header 设置时,它再次起作用。
req.addValue("application/json", forHTTPHeaderField: "Content-Type")
服务器
POST application/json /api/v2/DevHiin 201 19.925 ms - 95
PUT application/json /api/v2/DevBoost 201 23.729 ms - 65
但这真的不是一个完美的解决方案,而且整个代码真的很奇怪,有没有人有见识告诉我这是怎么回事?
非常感谢!
看起来 iOS 8.3 在 NSURLSessionConfiguration 中引入了一个错误,因此指定的 Content-Type 不被接受(有关类似问题,请参阅
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];