Мне трудно понять, как решить проблему, связанную с получением данных из моей конечной точки потоковой передачи.Следующая функция прекрасно работает в iOS 12, но не в 13 (см. Вывод встроенной консоли).По-видимому, подразумевается GET как метод http, и у GET не может быть тела, которое, я считаю, является вызовом setValue.Таким образом, вопрос заключается в том, как сделать авторизацию (предположительно с POST), а затем выполнить GET, чтобы сервер доставлял потоковые события?
Один комментарий (в Как использовать URLSessionStreamTask с URLSession для chunked- передача кодирования ) упоминает «… добавить значение тела через параметры URL запроса GET», но я не понимаю, что здесь имеется в виду.Кто-то может помочь?
func startStreaming () {
guard let url = SensorProject.urlForStreamAPI(nil) else { fatalError("startStreaming failed in generating url for stream api") }
var request = URLRequest(url: url)
/ * В iOS 12 этот код работает нормально, и мы получаем потоковые результаты с конечной точки, НО в iOS 13 происходит следующее (ипотоковые данные не получены:
2019-09-22 18:00:27.728325-0700 DTSensors[9880:1176642] GET method must not have a body
2019-09-22 18:00:27.728938-0700 DTSensors[9880:1173067] Task <4D2AF35D-EA2F-4CEA-BFEE-5AF936AC3BAF>.<1600> finished with error [-1103] Error Domain=NSURLErrorDomain Code=-1103 "resource exceeds maximum size" UserInfo={NSLocalizedDescription=resource exceeds maximum size, NSErrorFailingURLStringKey=https://api.disruptive-technologies.com/v2/projects/bhm5ru43iktucae701rg/devices:stream, NSErrorFailingURLKey=https://api.disruptive-technologies.com/v2/projects/bhm5ru43iktucae701rg/devices:stream, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalUploadTask <4D2AF35D-EA2F-4CEA-BFEE-5AF936AC3BAF>.<1600>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalUploadTask <4D2AF35D-EA2F-4CEA-BFEE-5AF936AC3BAF>.<1600>, NSUnderlyingError=0x600001509950 {Error Domain=kCFErrorDomainCFNetwork Code=-1103 "(null)"}}
2
* /
request.setValue("Basic \(self.base64LoginString)", forHTTPHeaderField: "Authorization")
let task = self.session.uploadTask(withStreamedRequest: request)
self.streamingTask = task
task.resume()
}