Я продолжаю работать в этой ситуации, когда я возвращаю плохой ответ HTTP (например, 400), но не могу посмотреть на HttpEntity в объекте HttpResponse. Когда я перехожу к отладчику, я вижу, что у объекта есть контент (длинa > 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 и поместить его в исключение.