Jersey de cabecera de respuesta personalizada / Java


Estoy tratando de lograr lo siguiente.

Lea un encabezado personalizado y su valor desde la solicitud:

name: username

Ahora, en respuesta, me gustaría devolver el mismo par de encabezado name:value en respuesta HTTP.

Estoy usando la implementación de Jersey 2.0 de JAX-RS webservice.

Cuando envío la URL de solicitud Http://localhost/test/, también se pasan los encabezados de solicitud (por el momento, aunque el complemento de Firefox los codifica).

Al recibir la solicitud para esa URL, el siguiente método se invoca:

@GET
@Produces(MediaType.APPLICATION_JSON)
public UserClass getValues(@Context HttpHeaders header) {
    MultivaluedMap<String, String> headerParams = header.getRequestHeaders();
    String userKey = "name";
    headerParams.get(userKey);

    // ...

    return user_object;
}

¿Cómo puedo lograr esto? Cualquier consejo sería genial!

Author: informatik01, 2013-07-26

3 answers

Simplemente inyecte un @Context HttpServletResponse response como argumento de método. Cambiar las cabeceras de que

@Produces(MediaType.APPLICATION_JSON)
public UserClass getValues(@Context HttpHeaders header, @Context HttpServletResponse response) {
    response.setHeader("yourheadername", "yourheadervalue");
    ...
}
 35
Author: Sotirios Delimanolis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-11 21:59:00

Creo que usar javax.ws.rs.core.Response es más elegante y es parte de Jersey. Solo para extender la respuesta anterior, aquí hay un ejemplo simple:

    @GET
    @Produces({ MediaType.APPLICATION_JSON })
    @Path("/values")
    public Response getValues(String body) {

        //Prepare your entity

        Response response = Response.status(200).
                entity(yourEntity).
                header("yourHeaderName", "yourHeaderValue").build();

        return response;
    }
 48
Author: Alex P,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-20 09:11:43

Devuelve un Response (una clase de JAX-RS) con UserClass como la entidad. En el Response puede establecer encabezados HTTP.

 2
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-26 13:55:32