【发布时间】:2016-12-10 21:36:35
【问题描述】:
在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 不包含响应数据。有什么办法得到吗?
【问题讨论】:
-
嗯.. 有趣的是,我遇到了一个类似的问题,在该问题之前,服务器没有使用传统方式实现,我必须自己手动验证,问题是即使是错误也可能在返回的 JSON 中有关于错误的数据,在这种情况下,错误可能为空
-
@VictorSigler 服务器实现正确。示例:假设它是登录请求。如果用户已登录,则 statusCode 为 200,但如果用户未登录,则 statusCode 为 400,其中 JSON 响应解释了用户未登录的原因(密码无效、帐户过期等)
-
是的正是我上面所说的,在这种情况下,我担心你不能使用Alamofire的
validate(),你应该尝试在响应中使用statusCode并尝试像我过去为这个疯狂的 API 所做的过滤案例:)