Search code examples
javajsonrestjerseyjax-rs

Custom response header Jersey/Java


I am trying to achieve the following.

Read a custom header and its value from Request:

name: username

Now, on response, I would like to return the same header name:value pair in HTTP response.

I am using Jersey 2.0 implementation of JAX-RS webservice.

When I send the request URL Http://localhost/test/, the request headers are also passed (for the time being, though Firefox plugin - hardcoding them).

On receiving the request for that URL, the following method is invoked:

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

How may I achieve this? Any pointers would be great!


Solution

  • Just inject a @Context HttpServletResponse response as a method argument. Change the headers on that

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