Est-il possible d'obtenir la valeur String d'un HttpEntity lorsque EntityUtils.toString () renvoie une exception?
Je continuer à courir dans cette situation où je rentre une mauvaise réponse HTTP (comme un 400), mais ne peut pas regarder la HttpEntity dans l'objet HttpResponse. Quand je suis à travers avec le débogueur, je peux voir que l'entité a le contenu (length > 0) et je peux même regarder le contenu, mais tout ce que je vois est un tableau de nombres (codes ASCII, je suppose?) ce qui n'est pas utile. Je vais appeler EntityUtils.toString() sur l'entité, mais je serai de retour une exception -- soit une IOException, ou une sorte de "l'objet est dans un état non valide" l'exception". C'est vraiment frustrant! Est-il un moyen d'obtenir ce contenu dans une forme lisible par l'homme?
Voici mon code :
protected JSONObject makeRequest(HttpRequestBase request) throws ClientProtocolException, IOException, JSONException, WebRequestBadStatusException {
HttpClient httpclient = new DefaultHttpClient();
try {
request.addHeader("Content-Type", "application/json");
request.addHeader("Authorization", "OAuth " + accessToken);
request.addHeader("X-PrettyPrint", "1");
HttpResponse response = httpclient.execute(request);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode < 200 || statusCode >= 300) {
throw new WebRequestBadStatusException(statusCode);
}
HttpEntity entity = response.getEntity();
if (entity != null) {
return new JSONObject(EntityUtils.toString(entity));
} else {
return null;
}
} finally {
httpclient.getConnectionManager().shutdown();
}
}
Voir où je jeter l'exception? Ce que je voudrais faire est de sucer le contenu de la HttpEntity et le mettre dans l'exception.
source d'informationauteur sangfroid
Vous devez vous connecter pour publier un commentaire.
Voici un code pour afficher l'entité comme une chaîne de caractères (étant donné que votre demande contentType est du html ou similaire):
Appache a déjà fourni un Util de classe appelé EntityUtils.
Pour permettre une forme lisible par l'homme, vous pouvez convertir HttpEntity de chaîne de caractères en UTF-8 code
Cela vous donnera des paramètres de Réponse en json formulaire comme:
Espère que cela résout le problème.