Alamofire: code d'état : 404, mais réponse.résultat = SUCCÈS

Créé le 27 oct. 2015  ·  3Commentaires  ·  Source: Alamofire/Alamofire

1

response serializer support

Commentaire le plus utile

Vous ne validez pas le code d'état de la réponse, il est donc possible qu'un 404 vous renvoie un cas .Success . Tout ce que fait le sérialiseur responseData est de valider qu'il n'y a pas eu d'erreur (ce qui n'est pas le cas puisque vous ne validez pas le code d'état de la réponse) ou que les données existent.

public static func dataResponseSerializer() -> ResponseSerializer<NSData, NSError> {
    return ResponseSerializer { _, _, data, error in
        guard error == nil else { return .Failure(error!) }

        guard let validData = data where validData.length > 0 else {
            let failureReason = "Data could not be serialized. Input data was nil or zero length."
            let error = Error.errorWithCode(.DataSerializationFailed, failureReason: failureReason)
            return .Failure(error)
        }

        return .Success(validData)
    }
}

Dans votre cas, vous recevez un 404 qui ne génère pas d'erreur et le serveur renvoie des données. Par conséquent, votre sérialiseur responseData réussit. Si vous vous attendez à ce qu'un 404 génère toujours une erreur, vous devez également utiliser la méthode .validate(statusCode: [200]) avant le sérialiseur responseData . Plus d'informations dans la section Validation du README.

À l'avenir, des questions comme celle-ci seront mieux adaptées à Stack Overflow avec une balise alamofire . Nous utilisons GitHub pour les bogues et les demandes de fonctionnalités. ??


De nos directives de contribution

Poser des questions

Nous n'utilisons pas GitHub comme forum de support. Pour toute question d'utilisation qui n'est pas spécifique au projet lui-même, veuillez plutôt demander sur Stack Overflow . Ce faisant, vous aurez plus de chances de résoudre rapidement votre problème et vous permettrez à toute autre personne ayant la même question de trouver la réponse. Cela permet également aux mainteneurs de se concentrer sur l'amélioration du projet pour les autres.

Tous les 3 commentaires

Vous ne validez pas le code d'état de la réponse, il est donc possible qu'un 404 vous renvoie un cas .Success . Tout ce que fait le sérialiseur responseData est de valider qu'il n'y a pas eu d'erreur (ce qui n'est pas le cas puisque vous ne validez pas le code d'état de la réponse) ou que les données existent.

public static func dataResponseSerializer() -> ResponseSerializer<NSData, NSError> {
    return ResponseSerializer { _, _, data, error in
        guard error == nil else { return .Failure(error!) }

        guard let validData = data where validData.length > 0 else {
            let failureReason = "Data could not be serialized. Input data was nil or zero length."
            let error = Error.errorWithCode(.DataSerializationFailed, failureReason: failureReason)
            return .Failure(error)
        }

        return .Success(validData)
    }
}

Dans votre cas, vous recevez un 404 qui ne génère pas d'erreur et le serveur renvoie des données. Par conséquent, votre sérialiseur responseData réussit. Si vous vous attendez à ce qu'un 404 génère toujours une erreur, vous devez également utiliser la méthode .validate(statusCode: [200]) avant le sérialiseur responseData . Plus d'informations dans la section Validation du README.

À l'avenir, des questions comme celle-ci seront mieux adaptées à Stack Overflow avec une balise alamofire . Nous utilisons GitHub pour les bogues et les demandes de fonctionnalités. ??


De nos directives de contribution

Poser des questions

Nous n'utilisons pas GitHub comme forum de support. Pour toute question d'utilisation qui n'est pas spécifique au projet lui-même, veuillez plutôt demander sur Stack Overflow . Ce faisant, vous aurez plus de chances de résoudre rapidement votre problème et vous permettrez à toute autre personne ayant la même question de trouver la réponse. Cela permet également aux mainteneurs de se concentrer sur l'amélioration du projet pour les autres.

J'apprécie beaucoup

Je suis aux prises avec ce problème... Merci beaucoup.

Cette page vous a été utile?
0 / 5 - 0 notes