Alamofire: isSuccess siempre es cierto, incluso con código de error

Creado en 11 oct. 2015  ·  3Comentarios  ·  Fuente: Alamofire/Alamofire

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.

question response serializer

Todos 3 comentarios

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

¿Fue útil esta página
0 / 5 - 0 calificaciones