JerseyClient没有抛出4xx和5xx响应的异常

时间:2018-03-15 14:26:38

标签: java exception jersey client resteasy

我有一个泽西客户端调用一个api,它的返回类型是javax.ws.rs.core.Response,正如所使用的接口中所定义的那样。

public Response getResponse(String id)

调用的响应状态为“服务器错误”,但客户端不会抛出InternalServerException而是返回InboundJaxrsResponse。

在检查Jersey代码时,我看到正在使用的JerseyInvocation类具有检查响应类型是否为javax.ws.rs.core.Response然后返回InboundJaxrsResponse对象的逻辑。 如何根据此处的响应状态获得适当的异常?

PS:RestEasy客户端也有类似的逻辑。

1 个答案:

答案 0 :(得分:1)

假设您使用<T> T get(Class<T> responseType)从HTTP响应主体获取整数,如果响应状态不是2xx,则可以抛出异常WebApplicationException

在您的情况下,API合同的第二个要求未得到履行

  

WebApplicationException - 如果是的响应状态代码   服务器返回的响应不成功   且指定的响应类型不是Response