如何在响应上调用读取实体两次?

2022-09-04 06:30:17

我现在正在做的事情是导致:

java.io.IOException: stream is closed

在第 2 次读取Entity() 时,因为它在第一次读取后关闭流。

以下是我正在做的事情:

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

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

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

更新

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


答案 2