如何在 Response 上调用 readEntity 两次?

How to call readEntity on a Response twice?

我现在正在做的是:

java.io.IOException: stream is closed

在第二次 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

/你可以使用Response#bufferEntity(),这将允许你多次读取实体流。

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

更新

在您使用 readEntity() 读取实体后,读取结果将被缓存并可通过调用 getEntity() 使用。此信息并没有真正回答 OP 的问题,但我认为添加这些信息很有用。