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!
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");
...
}
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;
}
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.