Alamofire:有没有办法在失败的情况下获得响应数据?

时间:2016-08-04 16:30:34

标签: ios swift alamofire

Alamofire调用.validate()进行自动验证并将状态代码200...299传递为成功。

如果API请求失败,服务器会发送状态代码400以及JSON中的一些内部错误消息和代码,以确定哪种错误。在下面的示例中,400下的状态代码为case .Failure,我无法找到获取此JSON数据的方法:

Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])
         .validate()
         .responseJSON { response in
             switch response.result {
             case .Success:
                 print("Validation Successful")
             case .Failure(let error):
                 print(error)
             }
         }

error不包含回复数据。无论如何得到它?

1 个答案:

答案 0 :(得分:0)

如果出现错误时从服务器返回的json数据,您应该能够从响应对象中获取它,例如:

print(response.result)   // result of response serialization

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

您还可以继承Alamofire返回的ErrorType对象:

public enum BackendError: ErrorType {
    case Network(error: NSError)
    case DataSerialization(reason: String)
    case JSONSerialization(error: NSError)
    case ObjectSerialization(reason: String)
    case XMLSerialization(error: NSError)
}

如果您不想构造要返回的自定义错误对象,这将为您提供有关错误的更多信息。更多关于Alamofire文档的内容:https://github.com/Alamofire/Alamofire#handling-errors