25

悪い HTTP 応答 (400 など) が返されるが、HttpResponse オブジェクト内の HttpEntity を確認できないという状況に陥り続けています。デバッガーをステップ実行すると、エンティティにコンテンツ (長さ > 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 のコンテンツを吸い出し、例外に入れることです。

4

4 に答える 4