3

我在 OS X 和 Linux 上遇到了 URLSession / URLSessionConfiguration / URLSessionDataTask 行为不同的问题。

斯威夫特:3.0.2 奇图拉:1.3

我正在做以下事情:

let aURL = URL(string: "...")!

// Because shared is not implemented                
let sessionConfig = URLSessionConfiguration.default

sessionConfig.httpAdditionalHeaders = ["Accept": "application/json", "Accept-Language": "sv-SE"]

let session = URLSession(configuration: sessionConfig)

// additionalHeaders are set just fine                
Log.info("\(session.configuration.httpAdditionalHeaders)")

let dataTask = session.dataTask(with: aURL, completionHandler: { data, loadResponse, error in
                   ...
                })

 dataTask.resume()

附加标头是在配置对象上设置的,但是当部署到 Bluemix 时,响应显示缺少语言标头字段(我得到的响应语言错误)。

我知道这个请求是正确的,因为当我在本地构建和运行这个(Kitura)时(通过 OS X 上的 Xcode),我得到了预期的行为。

有没有人遇到过这个?该怎么办?去哪儿?

4

2 回答 2

2

这可能是评论,但我仍然不允许发表评论!

是的,我的同事在处理这个错误时遇到了这个问题。我认为您采用的解决方法是最好的替代选择。这需要更多的调查。我为此问题创建了一个新的错误报告报告。

于 2016-12-20T09:48:04.363 回答
0

自己发现了一个hackaround:

...
var request = URLRequest(url: aURL, cachePolicy: .reloadRevalidatingCacheData, timeoutInterval: 3)
request.setValue("sv-SE", forHTTPHeaderField: "Accept-Language")
let dataTask = URLSession(configuration: URLSessionConfiguration.default).dataTask(with: request, ...

即使它有效,也很高兴知道原始解决方案发生了什么,因为我更喜欢它(它更漂亮)。

它是Linux上Foundation中的错误吗?

编辑:解决方法似乎只适用于 Swift 3.0.2,它不适用于 3.0.1。URL 标头确实很时髦。

于 2016-12-19T20:25:34.127 回答