当前位置: 首页 > 知识库问答 >
问题:

请求失败时从AlamoFire获取JSON响应

富锦
2023-03-14

我是iOS和Swift的新手,我正在尝试使用AlamoFire3.4.0来做一个web请求。当我的请求成功时,一切都很好。但是,如果我的请求失败,服务器将返回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?
             }
         }

我的理解是,对 的调用将验证状态代码是否为200-299,而超出该范围的所有其他内容都将导致。failure情况。假设这是正确的,当我返回401时,如何从我的失败处理程序内部访问响应体中的JSON呢?谢谢!

共有1个答案

端木骞尧
2023-03-14
case .Failure(let error)    
    if let JSON = response.result.value {
        print("JSON: \(JSON)")
    }

应该能奏效

 类似资料:
  • 我在Alamofire 5.3中收到了大量失败的请求,其中响应对象本身为nil,或者错误为“无法解析响应”。我可以从服务器日志中看到,所有这些请求都返回有效。 这是我的设置: API管理器类: AccessTokenInterceptor: 这个拦截器从插入我的授权令牌 我也使用标准路由器的URL刚需转换,编码是通过JSON序列化(字典)或可编码协议(对象) 奇怪的是,我不认为我在做任何不同于我使

  • 我正在使用带有Robospice(1.4.14)的Revovit(1.6.1)从一些服务中获取数据(响应应该在JSON中)。 在某些情况下,我可能会收到一个HTML错误页面,而不是一个JSON响应。服务器返回一个200状态代码,我不能改变它。在这种情况下,RoboSpice将调用方法。 在那里,我可以获得原始的expetion,但正文是。我是这样得到的: 在研究了reverfit的源代码之后,我发

  • 我试图建立一个基本的网页,允许用户在数据库的mysql表中添加一行,以便打开LED灯和使用arduino。然而,当我尝试提交表单时,页面返回500状态,mysql查询没有执行。我在我的电脑上运行linux-apache-mysql-php服务器。为什么会这样?

  • 我不知道我改变了什么,但是获取请求不再工作了(只使用Android)。它以前工作过,试图改变它回来,但不能让它工作。 我尝试了本期中的链接:React本地网络请求在获取数据时失败 我试图获取的数据 图像以便更好地查看

  • 问题内容: 我通过JavaScript收到了带有AJAX请求的JSON响应。 这是响应: 我的目标是获取内容: json变量是我的情况下的数据。因此,我尝试了: 但是我得到一个空字符串。 关于如何访问字符串的任何想法? 先感谢您。 问题答案: 您是否首先解析json? 比阅读

  • 我正在开发一个与我编写的RESTful网络服务通信的Android应用程序。在GET方法中使用Volley非常简单,但是我不能把我的手指放在POST方法上。 如何从我的post请求响应中获取字段这是我的响应 我想只有"访问令牌"内容 这是我的密码 请帮帮我?!