我正在使用泽西客户端将数据发布到网络服务。我注意到了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。
提前致谢!
答案 0 :(得分:2)
中定义任何人都可以告诉我为什么UniformInterfaceException没有得到 抛出?
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)