请求失败时从 AlamoFire 获取 JSON 响应
Posted
技术标签:
【中文标题】请求失败时从 AlamoFire 获取 JSON 响应【英文标题】:Getting JSON response from AlamoFire when request fails 【发布时间】:2016-10-02 04:04:08 【问题描述】:我是 ios 和 Swift 的新手,我正在尝试使用 AlamoFire 3.4.0 发出网络请求。当我的请求成功时,一切正常。但是,如果我的请求失败,服务器将在响应正文中返回 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?非常感谢!
【问题讨论】:
请在此处查看答案***.com/a/35324741/5093900 【参考方案1】:case .Failure(let error)
if let JSON = response.result.value
print("JSON: \(JSON)")
应该做的伎俩
【讨论】:
文档说 response.result.value 在失败的情况下将为 nil以上是关于请求失败时从 AlamoFire 获取 JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章
swift 3 alamofire - 获取请求给出响应序列化失败
通过使用 Alamofire 和解码获取 JSON - Swift 4
发送请求时从数据库中删除 Swift Alamofire“+”号