2012-06-07 11 views
5

Tengo un servicio web definido con Jersey en el lado del servidor como esto:Obtener el estado de una solicitud PUT en el cliente Jersey

@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(); 
} 

Estoy tratando de obtener el estado del servidor en mi cliente de New así:

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

Pero me sale el error:

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 

realmente no necesito el objeto de respuesta, sólo el código de estado, cómo podría obtenerlo?

+0

lo que lo hace '@ Produce'? –

+0

a javax.rs.core.Response –

+0

no, me refiero a 'MediaType'. –

Respuesta

4

Ok, lo solucioné cambiando el tipo de solicitud de respuesta:

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

con

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

siendo ClientResponse un com.sun.jersey.api.client.ClientResponse

+0

bien, buen trabajo. No noté eso ... –

1

Agregue la anotación @Consumes a su servidor web y el parámetro a su método bar(), porque intenta poner allí algún objeto llamado list.

Y le recomendaría usar @POST en su lugar, porque canonical @PUT no devuelve una respuesta.

UPD. Por cierto, tiene su entidad vacía; será mejor que elimine su anotación @Produces y simplemente devuelva Response con su estado establecido.

UPD2. y elimine el método .accept(MediaType.APPLICATION_XML) del lado del cliente.

+0

Gracias, probado, pero tengo los mismos resultados. La lista está llegando bien, si devuelvo una cadena "OK" en lugar de Response, funciona bien. Actualizaré la pregunta. –

+0

¿Recibió el error en el lado del cliente o del servidor? –

+0

Lo estoy recibiendo en el lado del cliente. Si depuro en el lado del servidor, veo que el proceso recibe la llamada y se ejecuta correctamente, enviando una respuesta Status.OK. –

Cuestiones relacionadas