获取HTTP错误期间的响应主体?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (12)

我碰到一个偶尔会抛出HTTP 403错误的API,响应主体可以以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错误情况下的响应主体。

提问于
用户回答回答于

swift 2:

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

swift 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。

扫码关注云+社区