Ios 后台下载无法获取错误响应
下载具有后台配置的文件时出现预期的错误响应Ios 后台下载无法获取错误响应,ios,swift,alamofire,Ios,Swift,Alamofire,下载具有后台配置的文件时出现预期的错误响应 { "ref": "123", "msg": "<error message>" } 唯一的问题是无法获取错误字典,否则将通过后台下载解决 我还尝试过通过SessionManager的请求方法下载,然后我得到了预期的错误字典,但是下载功能不起作用 已编辑 在下面的代码中,它为下载文件工作,并获取错误字典,但不在后台获取下载文件 let url = .... let headers = ... let request = Back
{
"ref": "123",
"msg": "<error message>"
}
唯一的问题是无法获取错误字典,否则将通过后台下载解决
我还尝试过通过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)
}
}
}
任何帮助都将不胜感激
谢谢我在这里可能是错的,但是如果您的API在返回JSON时返回状态代码200/201以及错误消息,那么您的
响应。结果
仍然是。成功
。因此,您还需要处理.success
案例中的错误消息。在这种情况下,.failure
案例不会触发。@Ayazmon我能够在let request=BackgroundSession.shared.manager.request(url,方法:.get,参数:nil,headers:headers)中获取字典。验证(状态代码:200…201)api,但问题是无法在BackgroundSession.shared.manager.download中获取相同的字典(url,方法:.get,参数:nil,编码:JSONEncoding.default,标题:标题,收件人:目标)api…见上文codes@Jasmin您收到错误时是否尝试访问task.response
?是否存在?@zysoft task.response是HTTPURLResponse,但它具有错误字典的预期内容长度,但如何从HTTPURLResponse获取数据。我不知道know@Jasmin闭包的第一个参数是什么?我猜是a 数据?
包含原始服务器响应的参数,字典在哪里。您能检查一下吗?
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)
}
}
}