我正在测试 REST API,当我进行 GET 调用来检索资源时,它会导致 500 内部服务器错误,并且在输出中返回具有媒体类型的消息application/json
:
[
{
"messageType": "Some error type",
"messageText": "Some message text",
"moreInfo": "Some info"
}
]
请注意,在上面的输出中,Json 位于里面[]
我想读取的值messageText
从上面的输出响应。我尝试过 -
JsonObject jsonObject = response.readEntity(JsonObject.class);
但它会导致以下错误:
java.lang.IllegalStateException: Entity input stream has already been closed.
at org.glassfish.jersey.message.internal.EntityInputStream.ensureNotClosed(EntityInputStream.java:225)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:830)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:783)
at org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:326)
at org.glassfish.jersey.client.InboundJaxrsResponse$1.call(InboundJaxrsResponse.java:111)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:399)
at org.glassfish.jersey.client.InboundJaxrsResponse.readEntity(InboundJaxrsResponse.java:108)
您能帮我如何读取输出中的消息吗?我正在使用泽西库。
根据javaDoc https://jersey.java.net/apidocs/2.7/jersey/javax/ws/rs/core/Response.html#readEntity(java.lang.Class),对 readEntity 的调用会关闭响应实体,因此当您进行另一个 readEntity 调用时,您会收到 IllegalStateException。
除非提供的实体类型是输入流,否则此方法
自动关闭未消费的原始响应实体数据
如果打开则流。
就我而言,有这样的表达response.readEntity(String.class)
当我在调试模式下运行代码时,调试透视图的表达式窗格中的 引起了此异常。表达式的求值消耗了实体并导致其关闭。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)