作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 Alamofire
中调用 .validate()
进行自动验证并传递状态代码 200...299
作为成功。
如果 API 请求失败,服务器会发送状态代码 400
和一些内部错误消息以及 JSON 中的代码来识别这是哪种错误。如果在以下示例中 case .Failure
下状态代码为 400
,我找不到获取此 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
不包含响应数据。有办法得到吗?
最佳答案
如果有错误从服务器返回的 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
关于ios - Alamofire:有没有办法在失败的情况下获取响应数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38772821/
我是一名优秀的程序员,十分优秀!