当前位置: 首页 > 面试题库 >

在HTTP错误期间有什么方法可以获取响应正文?

宓毅庵
2023-03-14
问题内容

我遇到的API偶尔会引发HTTP
403错误,并且响应正文可以json形式提供一些额外的信息,但是对于我来说,我似乎无法从Alamofire中获取信息响应对象。如果我通过Chrome浏览器访问API,则会在开发人员工具中看到该信息。这是我的代码

Alamofire.request(mutableURLRequest).validate().responseJSON() {
    (response) in
    switch response.result {
        case .Success(let data):
            if let jsonResult = data as? NSDictionary {
                completion(jsonResult, error: nil)
            } else if let jsonArray = data as? NSArray {
                let jsonResult = ["array" : jsonArray]
                completion(jsonResult, error: nil)
            }
        case .Failure(let error):
            //error tells me 403
            //response.result.data can't be cast to NSDictionary or NSArray like
            //the successful cases, how do I get the response body?
    }

我已经查询了几乎所有附加到响应的对象,但是在HTTP错误的情况下,它似乎并没有给我响应体。是否有解决方法或我在这里缺少的东西?


问题答案:

我在他们的github页面上问了这个问题,并从cnoon得到了答案:

迅捷2:

if let data = response.data {
    let json = String(data: data, encoding: NSUTF8StringEncoding)
    print("Failure Response: \(json)")
}

迅捷3:

if let data = response.data {
    let json = String(data: data, encoding: String.Encoding.utf8)
    print("Failure Response: \(json)")
}

https://github.com/Alamofire/Alamofire/issues/1059

我只是省略了编码部分,通过这样做,即使在发生错误的情况下,您也可以获得响应json。



 类似资料:
  • 我想要ot实现WebFlux示例客户端,它可以用http params发出请求,并获得响应体和http响应代码。我试过这个: 您能在之后给我一些建议吗?我如何获得http状态代码和所有可用的主体。

  • 问题内容: 我想通过NodeJS或Javascript API从Firebase提取Auth User(s)UID。我已经为其附上了屏幕截图,以便您了解我在寻找什么。 希望你们能帮助我。 问题答案: Auth数据在Firebase 3中是异步的。因此,您需要等待事件,然后才能访问当前登录用户的UID。您将无法获得其他人。应用也会同时打开时会被调用。 如果愿意,您也可以仅在收到事件后才渲染您的应用程

  • 材料设计非常强调“纸张”的隐喻。要做到这一点,阴影是必不可少的。由于材料设计是一种理念,而不是API(尽管它内置在L中),因此应该在任何地方(Windows窗体、HTML/CSS等)进行设计。如何在Android API 14到20中做到这一点? 请注意,对于圆形和其他非方形形状,预制PNG实际上并不实用。

  • 我试图在onFailure(ReformationError error)中获取错误响应正文,但获取的是null。 我正在使用标题“Accept:text/plain”(接受:text/plain)(接收请求)和“response”(响应),如果我设置日志级别,则可以将正文视为文本。完整。此外,<代码>错误。getResponse()。getStatus()为我提供正确的状态代码。 但是当我执行或

  • 我正在使用JMeter执行负载测试,用户应该执行启动-登录- clk仪表板页面- clk登录页面(登录后出现的页面,即主页),其中clk仪表板和clk登录页面重复操作5次。 直到30个用户,当我增加用户负载时,我没有收到任何错误,我开始收到错误,因为 响应代码:非HTTP响应代码:org.apache.HTTP.conn.HttpHostConnectException响应消息:非HTTP回应消息

  • 问题内容: 好的,因此我可以使用访问HTTP ajax响应标头 但似乎没有日期,尽管它在那里: 而代码只显示了这一点: 这是ajax调用: 有没有办法可以在响应头中获取日期? 问题答案: 这有帮助: