Resteasy Client java.lang.IllegalStateException:响应已关闭

Sub*_*shi 6 java resteasy

我在RestEasy客户端-3.0.8中遇到异常

12:46:19,724 ERROR [stderr](http-localhost-127.0.0.1-8080-1)java.lang.IllegalStateException:响应已关闭.

我在下面写了代码

client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target(request.getUrl());
Response response = target.request().accept(APPLICATION_TYPE_XML).header(TOKEN, request.getToken()).post(Entity.entity(request.getXmlObject(), APPLICATION_TYPE_XML));
output = response.readEntity(String.class);
if (response.getStatus() != SUCCESS_CREATE) {
 //Do Something
} else {
 String classType = ClassFactory.getClassNameFromUrl(request.getUrl());
 if (null != classType && !classType.isEmpty()) {
  Long Id = (Long) response.readEntity(ClassFactory.getClassMethod(classType)).getId();

 }
Run Code Online (Sandbox Code Playgroud)

现在这行Long Id = (Long) response.readEntity(ClassFactory.getClassMethod(classType)).getId();抛出异常.代码有什么问题?

pap*_*ika 6

读取响应将关闭响应。因此,当您调用response.readEntity(String.class); 此命令重复读取时,将导致错误response.readEntity(ClassFactory.getClassMethod(classType)).getId();

您可以通过在循环中重复第一个readEntity来轻松显示此内容。将响应读取为最方便的形式,并在必要时从那里进行转换。


Fly*_*KER 5

您可以缓冲正文响应以允许多次调用 readEntity():

response.bufferEntity();
Run Code Online (Sandbox Code Playgroud)