Любой способ получить тело ответа во время ошибок 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 даже в случае ошибок.