当前位置: 首页 > 知识库问答 >
问题:

JAX-RS泽西客户端:读取带有状态代码的响应

松烨烨
2023-03-14

我使用这个代码来调用泽西客户端的泽西JAX-RS服务。

public static void main(String[] args) {
    ClientConfig config = new DefaultClientConfig();
    Client client = Client.create(config);

    WebResource service = client.resource(getBaseURI());

    String msg = service.path("rest").path("ExceptionDemo").path("user").queryParam("id", "001").get(String.class);     
    System.out.println(msg);

}

private static URI getBaseURI() {
    return UriBuilder.fromUri("http://localhost:8045/ExceptionHanlding").build();
}

当响应状态代码为 200 时,此代码工作正常。但对于 200 以外的任何内容,此代码会引发异常。

如何修改此代码,以便根据响应的状态代码执行某些操作?

共有1个答案

丁茂
2023-03-14

使用<代码>。get(client response . class)而不是< code >。get(String.class)。这抑制了“错误状态下的异常”行为,ClientResponse允许您访问HTTP响应的详细信息。用户指南中的“接收响应”部分简要描述了这种行为。

 类似资料:
  • 我通过一个spring上下文注入了一个JAX RS客户端,如下所示: 在成功响应(200、202、204)的情况下,如何访问响应状态?

  • 在移动应用程序和Web服务之间有某种代理,我们在发出发布请求时对响应感到困惑。我们收到状态为200: OK的响应。但是我们找不到/提取JSON响应正文。 我们正在使用JAX-RS。有人能提供一些提示,从服务器响应中提取JSON主体(

  • 我正在进行一个示例项目,使用: JAX-RS(泽西2) JSR-303 Bean validaiton 泽西测试测试 Grizzly Http容器 杰克逊2.7.3 在添加@JsonIgnore和@JsonProperty之前,一切都按预期进行,在对对象属性执行bean验证时,我能够毫无问题地运行测试。通常情况下,“password”字段不应用于反序列化,所以我用@JsonIgnore标记了它的g

  • 不确定发生了什么,但我不知道我的反应在哪里被劫持了。

  • 问题内容: 在移动应用程序和Web服务之间具有某种代理,发出发布请求时的响应使我们感到困惑。我们收到状态为200的回复:OK。但是我们找不到/提取JSON响应主体。 我们正在使用JAX-RS。有人可以提供一些提示来从服务器响应中提取JSON正文()吗? 问题答案: 试试这个: 编辑 感谢@Martin Spamer提及它仅适用于Jersey 1.x罐子。适用于Jersey 2.x

  • 我试图将资源的实例注入具有Singleton作用域的JAX-RS应用程序,但当我这样做时,我得到: 警告:在服务器运行时中注册的提供程序com.test.jersey.app.MyResource未实现任何适用于服务器运行时的提供程序接口。由于约束配置问题,将忽略提供程序com.test.jersey.app.MyResource。 我有一个如下的应用程序,它需要一个已经运行的MyResource