tokuhirom's Blog

Apache HttpClient で Content-Body を String として得る

public String getContentBody(CloseableHttpResponse res) {
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    res.getEntity().writeTo(stream);
    byte[] bytes = stream.toByteArray();

    ContentType contentType = ContentType.getOrDefault(res.getEntity());
    new String(bytes, contentType.getCharset());
}

としてもいいけど、

EntityUtils.toString(res.getEntity());

とすればいい。

ただこの方法でやる場合、Entity 一回読むと二回は読めないのが不便ではある。 使い勝手のいいゆるふわライブラリを作りたい場合は、Entity 読みだした後でどっかに保存しておいたほうがいいのかも。