【问题标题】:httpAdditionalHeaders not working on linuxhttpAdditionalHeaders 在 Linux 上不起作用
【发布时间】:2016-12-19 19:39:19
【问题描述】:

我在 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)时,我得到了预期的行为。

有人遇到过吗?该怎么办?去哪儿?

【问题讨论】:

标签: linux swift ibm-cloud foundation kitura


【解决方案1】:

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

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

【讨论】:

  • 谢谢你,我被似乎相同的东西击中(解决方法没有为我解决 - stackoverflow.com/questions/41601863/… )。我确保对您的错误报告进行投票,希望其他人也这样做
【解决方案2】:

自己发现了一个破解方法:

...
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 标头确实很时髦。

【讨论】:

    猜你喜欢
    • 2017-04-15
    • 2019-05-14
    • 2012-10-06
    • 2017-11-25
    • 2013-03-22
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多