获取Jersey客户端上的PUT请求的状态

时间:2012-06-07 16:01:46

标签: java web-services jersey

我在服务器端使用Jersey定义了一个web服务,如下所示:

@POST
@Consumes(MediaType.APPLICATION_XML)
@Path("/foo")
public Response bar(List<Foo> listFoo) {    
 try {
        //save the resource
        } catch (Exception e) {
        log.error("Error saving", e);
        return Response.status(Status.INTERNAL_SERVER_ERROR).build();
    }
    return Response.status(Status.OK).build();
}

我试图在我的Jersey客户端中获取服务器状态,如下所示:

Response response = ws.type(MediaType.APPLICATION_XML).post(Response.class,list);

但我收到错误:

A message body reader for Java class javax.ws.rs.core.Response, and Java type class javax.ws.rs.core.Response, and MIME media type application/xml was not found javax.ws.rs.core.Response

我真的不需要Response对象,只需要状态代码,我怎么能得到它?

2 个答案:

答案 0 :(得分:4)

好的,我通过更改请求响应类型来解决它:

Response response = ws.type(MediaType.APPLICATION_XML).post(Response.class,list);

ClientResponse response = ws.type(MediaType.APPLICATION_XML).post(ClientResponse.class,list);

ClientResponse一个com.sun.jersey.api.client.ClientResponse

答案 1 :(得分:1)

@Consumes注释添加到您的网络服务中,并将参数添加到bar()方法,因为您正尝试将一些名为list的对象放入其中。

我建议您改用@POST,因为规范@PUT不会返回回复。

UPD。顺便说一下,您的实体是空的 - 您最好删除@Produces注释,然后返回Response并设置其状态。

UPD2。并从客户端删除.accept(MediaType.APPLICATION_XML)方法。