Фоновая загрузка не может получить ответ об ошибке - PullRequest
3 голосов
/ 21 февраля 2020

Ожидаемое сообщение об ошибке при загрузке файла с фоновой конфигурацией

{
  "ref": "123",
  "msg": "<error message>"
}

при создании Задача с данными Я могу получить сообщение об ошибке, как и ожидалось, но если я go через фоновый сеанс не удалось получить словарь ошибок.

let url = ....
let destination = ... 
let headers = ... 

        BackgroundSession.shared.manager.download(url, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: headers, to: destination).downloadProgress(queue: DispatchQueue.global(qos: .utility)) { progress in

        }
        BackgroundSession.shared.manager.delegate.taskDidComplete = { _, task, error in // task completed with error
            if let error = error {
                // ONLY can get Error response width code not expected dictionary 
            }
        }

        BackgroundSession.shared.manager.delegate.downloadTaskDidFinishDownloadingToURL = { _, task, tempLocation in
            if let response = task.response as? HTTPURLResponse {
                 // Do something expected
            }
        }

Единственная проблема - не удалось получить словарь ошибок, иначе работал с штрафом при фоновой загрузке

Я также пытался загрузить через запрос метод SessionManager тогда я получаю ожидаемый словарь ошибок, но затем загружаемая функция не работает

отредактировано В следующем коде это рабочий файл для загрузки файл и получить словарь ошибок, но не получить файл загрузки в фоновом режиме.

let url = ....
let headers = ...
 let request = BackgroundSession.shared.manager.request(url, method: .get, parameters: nil, headers: headers).validate(statusCode: 200...201)
         request.responseData { (response) in
           if let resp = response.response {
          switch response.result {
          case .success(let data):

          case .failure:
           var ne = NetworkError(rawValue: resp.statusCode)!
           if let dict = self.convertDataToDictionary(response.data) {
              ne = NetworkError(code: resp.statusCode, json: dict)
           }
            errorCallback(resp, ne)
          }
         }
         } 

Любая помощь будет оценена

Спасибо

...