How to get access to HTTP header information in Spring MVC REST controller? How to get access to HTTP header information in Spring MVC REST controller? spring spring

How to get access to HTTP header information in Spring MVC REST controller?


When you annotate a parameter with @RequestHeader, the parameter retrieves the header information. So you can just do something like this:

@RequestHeader("Accept")

to get the Accept header.

So from the documentation:

@RequestMapping("/displayHeaderInfo.do")public void displayHeaderInfo(@RequestHeader("Accept-Encoding") String encoding,                              @RequestHeader("Keep-Alive") long keepAlive)  {}

The Accept-Encoding and Keep-Alive header values are provided in the encoding and keepAlive parameters respectively.

And no worries. We are all noobs with something.


You can use the @RequestHeader annotation with HttpHeaders method parameter to gain access to all request headers:

@RequestMapping(value = "/restURL")public String serveRest(@RequestBody String body, @RequestHeader HttpHeaders headers) {    // Use headers to get the information about all the request headers    long contentLength = headers.getContentLength();    // ...    StreamSource source = new StreamSource(new StringReader(body));    YourObject obj = (YourObject) jaxb2Mashaller.unmarshal(source);    // ...}


My solution in Header parameters with example is user="test" is:

@RequestMapping(value = "/restURL")  public String serveRest(@RequestBody String body, @RequestHeader HttpHeaders headers){System.out.println(headers.get("user"));}