使用后台配置下载文件时出现预期的错误响应
{
"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)
}
}
}
任何帮助将不胜感激
谢谢