java - JerseyClient 不会针对 4xx 和 5xx 响应引发异常

标签 java exception jersey client resteasy

我有一个 Jersey 客户端,它调用一个 api,其返回类型为 javax.ws.rs.core.Response(如所使用的接口(interface)中所定义)。

public Response getResponse(String id)

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

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

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

最佳答案

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

就您的情况而言,未满足 API 契约(Contract)的第二个要求

WebApplicationException - in case the response status code of the response returned by the server is not successful and the specified response type is not Response.

关于java - JerseyClient 不会针对 4xx 和 5xx 响应引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49302059/

相关文章:

java - findViewById 在 jar 中返回 null

java - 来自 ZonedDateTime 即时的日期不是 utc

java - 在Oracle SQL中编译Java源代码时Base64出现错误

java - 如何访问Camel errorHandler中的异常?

java - 可以使用此模式进行值检查吗?

php - 如何在 PHP DateTime::createFromFormat() 上抛出异常?

java - 代码作为 Java 应用程序工作正常,但在服务器上抛出 NullPointerException

兼容 Java 类名

java - 当我尝试通过 POST 方法创建对象时,为什么会出现 NullPointerException?

jersey - @PostConstruct 方法一直在 Jersey 服务上调用