后台下载无法获得错误响应

时间:2020-02-21 12:09:23

标签: ios swift alamofire

使用后台配置下载文件时出现预期的错误响应

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

如果创建数据任务,我能够得到预期的响应错误 但是如果我通过后台会话无法获取错误字典。

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 request 方法下载,然后得到预期的错误字典,但是下载功能不起作用

已编辑 在下面的代码中,该文件可用于下载文件并获取错误字典,但不会在后台获取下载文件。

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)
          }
         }
         } 

任何帮助将不胜感激

谢谢

0 个答案:

没有答案
相关问题