如何在响应中调用readEntity两次?

时间:2017-12-06 16:38:46

标签: java rest jaxb jax-rs httpresponse

我现在正在做的是产生一个:

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

1 个答案:

答案 0 :(得分:7)

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

PrintStream out = new PrintStream(new FileOutputStream("/home/nadhmanovic/Bureau/output.txt"));
System.setOut(out);

更新

使用Response response = ... response.bufferEntity(); String s = response.readEntity(String.class); MyEntity me = response.readEntity(MyEntity.class); response.close(); 读取实体后,读取结果将被缓存,并且可以调用readEntity()。这些信息并没有真正回答OP的问题,但我认为这是有用的信息。