Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 后台下载无法获取错误响应_Ios_Swift_Alamofire - Fatal编程技术网

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