使用Response参数的方法中的IllegalStateException

时间:2016-04-29 19:32:35

标签: java jax-rs dropwizard

我写了一个简单的类来测试响应读取实体方法(如果它按预期工作)。但它没有奏效。

当我启动课程时,我在'".$yearly_income."')";发现了以下错误:

response.readEntity()

这是我写的代码

Exception in thread "main" java.lang.IllegalStateException: Method not supported on an outbound message.  
  at org.glassfish.jersey.message.internal.OutboundJaxrsResponse.readEntity(OutboundJaxrsResponse.java:150)

我做错了什么?

2 个答案:

答案 0 :(得分:26)

Response es有两种类型,即入站和出站,但它们仍然使用相同的接口。出站是指从服务器发送响应

Response response = Response.ok(entity).build();

入站是指您在客户端收到回复。

Response response = webTarget.request().get();

在服务器端出站响应中禁用readEntity方法,因为您不需要它。它仅在您需要_de_serialize响应流的响应时使用。但是当它出站时没有。

如果您希望实体出站响应,请使用Response#getEntity()

答案 1 :(得分:1)

您可以直接使用 Mockito 模拟响应。像这样

private final Response response = Mockito.mock(Response.class);

然后您可以在调用 readEntity 方法时模拟所需的响应。

Mockito.when(response.readEntity(String.class)).thenReturn("result");