In this post i will explain you how to capture http-request header in JAX-RS.

  • Using @HeaderParam
  • Using @Context

###@HeaderParam Example

In this example we can have only the selected attribute we want , JAX-RS will have filter internally and return you the selected Attributes

require(fpp)

nts=ts(c(10,11,2,32,78))

t=forecast(nts)

plot(t)
 

This will going to print below output :

User Agent : Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30

@Context Example

@Context gives you the whole damn Request Header

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
 
import org.apache.log4j.Logger;
 
public class RequestHandler
{
 
    Logger logger = Logger.getLogger(RequestHandler.class);
 
    private DataServiceController dataServiceController;
 
    @Path("/ready")
    @GET
    @Produces(MediaType.TEXT_HTML)
    public boolean ready(@Context HttpHeaders headers)
    {
 
for(String header : headers.getRequestHeaders().keySet()){
            System.out.print(header + "==> ");
             for (String value : headers.getRequestHeader(header)) {
                System.out.print(value + ":");
            }
            System.out.println();
        }
 
return true;
}
}

This will going to print below output :

Accept==> text/html:application/xhtml+xml:application/xml;q=0.9:*/*;q=0.8:
accept-encoding==> gzip:deflate:
accept-language==> en-US:en;q=0.5:
connection==> keep-alive:
Content-Type==> 
host==> localhost:8080:
user-agent==> Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:25.0) Gecko/20100101 Firefox/25.0:

Happy Coding .. :)

Comments