web-dev-qa-db-ja.com

応答でreadEntityを2回呼び出す方法は?

私が今していることは、次の結果になります。

Java.io.IOException: stream is closed

最初の読み取り後にストリームを閉じるため、2番目のreadEntity()で。

これが私がしていることです:

Response response = target.queryParam("start", startIndex)
   .queryParam("end", end)
   .request()
   .accept(MediaType.APPLICATION_XML)
   .header(authorizationHeaderName, authorizationHeaderValue)
   .get();

String xml = response.readEntity(String.class);
ourLogger.debug(xml);


MyClass message = response.readEntity(MyClass.class); //throws IOException
9
jwils

/ Response#bufferEntity() を使用できます。これにより、エンティティストリームを複数回読み取ることができます。

_Response response = ...
response.bufferEntity();
String s = response.readEntity(String.class);
MyEntity me = response.readEntity(MyEntity.class);
response.close();
_

更新

readEntity()を使用してエンティティを読み取った後、読み取りの結果がキャッシュされ、getEntity()の呼び出しで使用できます。この情報はOPの質問に実際には答えていませんが、追加するのに役立つ情報だと思いました。

9
Paul Samsotha