Я продолжаю сталкиваться с этой ситуацией, когда я получаю плохой ответ HTTP (например, 400), но не могу посмотреть HttpEntity в объекте HttpResponse. Когда я выполняю отладчик, я вижу, что сущность имеет содержимое (длина > 0), и я даже могу просмотреть содержимое, но все, что я вижу, — это массив чисел (я полагаю, коды ASCII?), который не является полезный. Я вызову EntityUtils.toString() для объекта, но я верну исключение — либо IOException, либо какое-то исключение «объект находится в недопустимом состоянии». Это действительно расстраивает! Есть ли способ получить этот контент в удобочитаемой форме?
Вот мой код:
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();
}
}
Видите, где я выбрасываю исключение? Что я хотел бы сделать, так это высосать содержимое HttpEntity и поместить его в исключение.
EntityUtils.toByteArray()
и самостоятельно создать шестнадцатеричный дамп этих байтов. - person hmakholm left over Monica   schedule 30.08.2011