Retrofit 2.0 - Comment obtenir le corps de réponse pour 400 Bad Erreur de demande?
Donc quand je fais un POST appel API pour mon serveur, j'obtiens un 400 Bad Request error avec réponse JSON.
{
"userMessage": "Blah",
"internalMessage": "Bad Request blah blah",
"errorCode": 1
}
Je l'appelle par
Call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
//AA
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
//BB
}
}
Cependant le problème est que une fois que j'aurai la réponse, onFailure() est l'invoquer, de sorte que //BB est appelé. Ici, je n'ai aucun moyen d'accéder à la réponse JSON.
Lorsque je me connecte à l'api de requête et de réponse, il ne montre pas de réponse JSON. Et Throwable t est IOException. Cependant, étrangement, quand j'ai fait le même appel sur le Facteur, il ne retour attendu réponse JSON avec 400 code d'erreur.
Donc ma question est comment puis-je obtenir la réponse json quand je reçois 400 Bad Request error? Dois-je ajouter quelque chose à okhttpclient?
Grâce
source d'informationauteur user2062024 | 2016-07-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire comme dans votre
onResponse
méthode, n'oubliez pas 400 est un état de réponse pas une erreur:Et vous pouvez gérer n'importe quel code de réponse à l'exception de 200-300 avec
Gson
comme :Ajouter à votre
build.gradle
:compile 'com.google.code.gson:gson:2.7'
Si vous voulez créer
Pojo
classe aller à Json Schema 2 Pojo et coller votre exempleJson
réponse. Sélectionnez le type de source de Json et d'annotation Gson .J'ai eu même problème, mais le code existant était en tenir à RxJava 2 de la chaîne.
Voici ma solution:
la transformation de 400 réponses en rx chaîne est assez simple:
C'est comment vous pouvez gérer le message de réponse
Je suis à la manipulation de l'erreur 500, vous pouvez en ajouter autant que vous voulez