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