Любой способ получить тело ответа во время ошибок HTTP?

Я использую API, который будет иногда вызывать ошибку HTTP 403, и тело ответа может предоставить некоторую дополнительную информацию в форме json, однако для жизни меня я не могу заставить эту информацию вернуться от объектов ответа Alamofire. Я вижу информацию в инструментах разработчика, если я ударил 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. Есть ли работа или что-то, что мне здесь не хватает?

Ответы

Ответ 1

Я задал этот вопрос на своей странице github и получил ответ от cnoon:

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 даже в случае ошибок.