2016-12-19 9 views
3

У меня возникла проблема различного поведения URLSession/URLSessionConfiguration/URLSessionDataTask для OS X и Linux.httpAdditionalHeaders не работает на linux

Swift: 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) локально (тщательный Xcode на OS X), я получаю ожидаемое поведение.

С кем это столкнулось? Что делать? Куда идти?

+0

Эта проблема исправлена. https://bugs.swift.org/browse/SR-3463 Запрос на передачу: https: //github.com/apple/swift-corelibs-foundation/pull/927 –

ответ

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

Несмотря на то, что работает неплохо было бы знать, что происходит с оригинальным решением, потому что мне нравится это лучше (это симпатичнее).

Это ошибка в Foundation на 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

Смежные вопросы