球衣客户不会抛出异常财产

时间:2015-02-18 04:03:55

标签: java jersey-client

我正在使用泽西客户端将数据发布到网络服务。我注意到了Jersey客户端的一些奇怪行为。

我正在使用以下代码:

    WebResource resource=null;
    try {
        ClientResponse response =   resource.accept(mediaType).post(ClientResponse.class, requestEntity);

System.out.println("Successful response received, statusCode=" + jerseyClientResponse.getStatus());)

    } catch (UniformInterfaceException e) {
        ClientResponse r = e.getResponse();
        System.out.println("Exception from server, statusCode="+r.getStatus());
    }

如果服务器返回404状态,我希望jersey抛出UniformInterfaceException异常但是当我执行代码时,我得到以下消息:

Successful response received, statusCode=404

有谁能告诉我为什么UniformInterfaceException没有被抛出?

我正在使用jersey客户端版本1.18。

提前致谢!

1 个答案:

答案 0 :(得分:2)

  

任何人都可以告诉我为什么UniformInterfaceException没有得到   抛出?

它在contract for this method

中定义
  

UniformInterfaceException - 如果HTTP响应的状态是   大于或等于300,c不是ClientResponse类型。

使用客户端响应以外的类型来获得所需的结果。

    Client client = Client.create();
    WebResource webResource = client
            .resource("http://google.com/fake/no_url");
    Object requestEntity = null;
    final String post = webResource.post(String.class, requestEntity);

Exception in thread "main" com.sun.jersey.api.client.UniformInterfaceException: POST http://google.com/fake/no_url returned a response status of 411 Length Required
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:686)