繁体   English   中英

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

[英]Get status for a PUT request on Jersey client

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

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

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

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

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

UPD。 顺便说一句,您的实体为空-您最好删除@Produces批注,只返回状态已设置的Response

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM