5

我在服务器端使用 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 对象,只需要状态码,我怎么能得到它?

4

2 回答 2

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

于 2012-06-08T09:29:39.593 回答
1

为您的网络服务添加@Consumes注释并将参数添加到您的bar()方法,因为您试图将一些名为list.

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

UPD。顺便说一句,您的实体为空 - 您最好删除您的@Produces注释并返回Response其状态集。

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

于 2012-06-08T07:49:49.740 回答