自定义响应头泽西/ Java

我正在努力实现以下目标。

从Request中读取自定义标头及其值:

name: username 

现在,作为响应,我想在HTTP响应中返回相同的头name:value对。

我正在使用Jersey 2.0实现的JAX-RS webservice。

当我发送请求URL Http://localhost/test/ ,请求头也被传递(暂时,虽然Firefox插件 – 硬编码)。

收到该URL的请求后,将调用以下方法:

 @GET @Produces(MediaType.APPLICATION_JSON) public UserClass getValues(@Context HttpHeaders header) { MultivaluedMap headerParams = header.getRequestHeaders(); String userKey = "name"; headerParams.get(userKey); // ... return user_object; } 

我怎么能实现这个目标? 任何指针都会很棒!

只需注入一个@Context HttpServletResponse response作为方法参数。 更改标题

 @Produces(MediaType.APPLICATION_JSON) public UserClass getValues(@Context HttpHeaders header, @Context HttpServletResponse response) { response.setHeader("yourheadername", "yourheadervalue"); ... } 

我认为使用javax.ws.rs.core.Response更优雅,它是Jersey的一部分。 只是为了扩展之前的答案,这是一个简单的例子:

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

UserClass作为实体返回Response (来自JAX-RS的类)。 在Response您可以设置HTTP标头。