请求失败时从AlamoFire获取JSON响应

我是iOS和
Swift的新手,我正在尝试使用AlamoFire 3.4.0来发布Web请求.当我的请求成功时,一切正常.但是,如果我的请求失败,服务器将在响应正文中返回状态代码300或更高以及一些JSON,其中包含有关请求失败原因的更多信息.例如,我正在谈论的API要求对每个请求进行身份验证.如果由于某种原因身份验证失败,我将返回401并且响应正文中的JSON将是:

{"developerMessage" : "Request failed because signature was incorrect."}

我提出此请求的代码如下所示:

let headers = [
   "X-Auth-Signature" : signature
]

Alamofire.request(.GET, "https://server.com/get", headers: headers)
         .validate()
         .responseJSON { response in
             switch response.result {
             case .Success(let json)
                // process JSON response here
             case .Failure(let error)
                print("Request failed with error: \(error)")
                // how can I access the JSON in the response body from here?
             }
         }

我的理解是,对.validate()的调用将验证状态代码是否为200 – 299,并且该范围之外的所有其他内容都将导致.Failure情况.假设这是正确的,当我回到401时,如何从故障处理程序中访问响应体中的JSON?非常感谢!

最佳答案

case .Failure(let error)    
    if let JSON = response.result.value {
        print("JSON: \(JSON)")
    }

应该做的伎俩

点赞