Comment obtenir le corps de la réponse à la rénovation d'exception?
Je suis en train d'essayer de se connecter au service rest via rénovation en application android. Je suis à obtenir des réponses. Mais lorsqu'il y a une erreur de réponse du service, de la conversion exception se produit, et maintenant je veux faire des actions basées sur le corps de la réponse. Mais je suis le corps de la réponse NULLE. Mais la rénovation du journal a un message d'erreur. Pourquoi est-ce qui se passe.
D/Reftofit log(24856): OkHttp-Received-Millis: 1397527055676
D/Reftofit log(24856): OkHttp-Response-Source: NETWORK 200
D/Reftofit log(24856): OkHttp-Sent-Millis: 1397527055492
D/Reftofit log(24856): Server: Apache/2.2.22 (Ubuntu)
D/Reftofit log(24856): X-Powered-By: PHP/5.3.10-1ubuntu3.10
D/Reftofit log(24856): {"result":"Invalid Token ID"}
Code:
public void failure(RetrofitError retrofitError) {
String response = null;
TokenError tokenError = (TokenError) retrofitError.getBodyAs(TokenError.class);
response = tokenError.getErrorDetails();
Log.e(TAG, response);
if (response != null && response.contains("Invalid Token ID")) {
GroupDataProvider.getInstance().onFailure();
}
}
Ici, je suis tokenError
comme null
. Je ne sais pas pourquoi? Dois-je créer quelque chose avec le reste de l'adaptateur de sorte que la réponse sera transmise à rénover l'objet d'erreur.
Vous devez vous connecter pour publier un commentaire.
Essayez ce code:
avec Rénovation 2.0
en cas d'erreur dans la Chaîne de format:
si vous avez besoin d'objet personnalisé:
Votre serveur devrait retourner 4xx code d'erreur HTTP pour obtenir ce travail.
Lorsque le serveur renvoie HTTP 200-ce que cela signifie réponse en cas de succès et il sera traité avec
onSuccess
branche. Il est probable que vos objets sur lesquels vous vous passer deCallback<Object>
doit être prêt à gérer à la fois le succès et le résultat de l'erreur.Pour vérifier que c'est le cas, vous pouvez vérifier si
RetrofitError
est en fait unJsonParseException
par l'ajout suivant extrait de:error.getMessage()
ne pas retourner le corps a envoyé de REPOS et de service, mais quelque chose comme "406 not Acceptable" (dans le cas où vous recevez une 406). Voir la réponse en Cabezas pour obtenir effectivement le corps.vous avez besoin d'utiliser getErrorStream() pour cela.
Ref: github problème