• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-11 17:11:04 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

如果 API 请求失败,服务器会发送状态码 400 和一些内部错误消息和 JSON 中的代码,以识别这是哪种错误。在以下示例中,如果状态代码是 400case .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 不包含响应数据。有什么办法得到吗?



Best Answer-推荐答案


如果有错误从服务器返回的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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap