How to call readEntity on a Response twice?

jwils :

What I'm doing right now is resulting in a:

java.io.IOException: stream is closed

on the 2nd readEntity() since it closes the stream after the first read.

Here is what I'm doing:

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
Paul Samsotha :

/You can use Response#bufferEntity(), which will allow you to read the entity stream multiple times.

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

Update

After you read the entity with readEntity(), the result of the reading is cached and is available with the call to getEntity(). This information doesn't really answer the OP's question, but I thought it was useful information to add in.

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=443042&siteId=1