ios - para - ¿Alguna forma de obtener el cuerpo de respuesta durante los errores HTTP?
http/1.1 200 ok (1)
Estoy golpeando una API que ocasionalmente arrojará un error HTTP 403, y el cuerpo de la respuesta puede proporcionar información adicional en forma de json, sin embargo, por mi vida, no puedo obtener la información del Alamofire Objetos de respuesta. Veo la información en las herramientas de desarrollo si llego a la API a través de Chrome. Aquí está mi código:
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?
}
He consultado prácticamente todos los objetos adjuntos a la respuesta, pero parece que no me devuelve el cuerpo de la respuesta en el caso de errores HTTP. ¿Hay una solución o algo que me estoy perdiendo aquí?
Hice esta pregunta en su página de github y obtuve una respuesta de cnoon:
Swift 2:
if let data = response.data {
let json = String(data: data, encoding: NSUTF8StringEncoding)
print("Failure Response: /(json)")
}
rápido 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
Acabo de omitir la parte de codificación, al hacer esto, puede obtener la respuesta json incluso en el caso de errores.