El servidor está enviando el código de respuesta 404, pero parece que el marco lo está interpretando como un éxito.
Código:
Alamofire.request(.GET, Constants.Path.rootUrl + "/api/users", parameters: ["username" : usernameString, "limit":3] , headers: ["tb-token" : userToken!])
.responseJSON { response in
print(response.request) // original URL request
print(response.response) // URL response
print(response.data) // server data
print(response.result) // result of response serialization
let results = response.result
if let JSON = response.result.value {
if response.result.isSuccess == true {
print("Success with JSON: \(JSON)")
self.tableView.hidden = false
self.resultsDict = results.value as! NSArray
let resultsNumber = results.value!.count
self.numberOfResults.text = "Results(\(resultsNumber))"
self.numberOfResults.hidden = false
self.resultsN = resultsNumber
self.loadedMode = true
self.tableView.reloadData()
self.tableView.hidden = false
}
}
else {print("error")}
}
isSuccess siempre es verdadero, sea cual sea el código que el servidor esté enviando.
Por defecto, Alamofire registra cualquier respuesta que pasa por el serializador de respuestas (en su ejemplo, el JSONResponseSerializer
usado por .responseJSON
) como un éxito. Si desea validar el código de respuesta de su solicitud, simplemente agregue .validate()
a su cadena de solicitudes. Esto asegurará que su código de respuesta esté entre 200 y 299, inclusive. También puede personalizar la validación utilizando los métodos descritos en la documentación .
En tu caso:
Alamofire.request(.GET, Constants.Path.rootUrl + "/api/users", parameters: ["username" : usernameString, "limit":3] , headers: ["tb-token" : userToken!])
.validate()
.responseJSON { response in }
Gracias, funcionó a las mil maravillas!
Gracias, funcionó. Usando .validate()
la respuesta es validada.
Pero hay otro problema, usando .validate()
no obtengo el valor de respuesta: response.result.value
.
¿Existe alguna solución o solución temporal?
Gracias