URLRequest для получения данных от конечной точки потоковой передачи - PullRequest
0 голосов
/ 23 сентября 2019

Мне трудно понять, как решить проблему, связанную с получением данных из моей конечной точки потоковой передачи.Следующая функция прекрасно работает в 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()
}
...