2016-12-19 19 views
3

OS XとLinuxでURLSession/URLSessionConfiguration/URLSessionDataTaskの動作が異なるという問題が発生しました。LinuxでhttpAdditionalHeadersが動作しない

スウィフト:3.0.2 Kitura: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を徹底的に)ビルドして実行すると、期待される動作が得られるので、リクエストが正しいことを知っています。

誰かがこれに遭遇しましたか?何をすべきか?どこへ行く?

... 
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, ... 

を、それは私が(それはきれいだ)良いことを好きなので、元の溶液で何が起こっているか知っていいだろう作品にもかかわらず:

+0

この問題は修正されています。 https://bugs.swift.org/browse/SR-3463プルリクエスト:https://github.com/apple/swift-corelibs-foundation/pull/927 –

答えて

0

は自分がやってhackaroundを発見しました。

Foundation on linuxのバグですか?

編集:回避策はSwift 3.0.2でのみ動作するようですが、3.0.1では動作しません。 URLヘッダーでは、何かが本当にファンキーです。

2

これはコメントでしたが、私はまだコメントを投稿することはできません!

はい、私の同僚はthis bugに取り組んでいる間にこれを見つけました。私はあなたが採用した回避策が最良の選択肢だと思います。これはより多くの調査が必要です。この問題の報告書はnew bug reportです。

+0

これはありがとうございました。同じ(回避策は私のために解決しなかった - http://stackoverflow.com/questions/41601863/urlsession-on-linux-giving-different-result-than-on-ios)。私はあなたのバグレポートをアップに投票しました、他の人が同じように願っています – niklassaers

関連する問題