如何在 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 的问题,但我认为添加这些信息很有用。
我现在正在做的是:
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 的问题,但我认为添加这些信息很有用。