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

问题描述 投票:5回答:1

我现在正在做的是导致:

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
java rest jaxb jax-rs httpresponse
1个回答
8
投票

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

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

Update

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

© www.soinside.com 2019 - 2024. All rights reserved.