Issue
I know that spring3 has @RequestHeader
to get a single request header in a controller. I'm wondering if there is an easy way to get ALL the request headers? I'm hoping for something like this:
@RequestMapping(value="/some/url",RequestMethod.GET)
public void endpoint(RequestParams params, BindingResult result, @RequestHeader MultiValueMap<String,String> headers, HttpServletRequest request, ModelMap model) {
}
Currently I'm doing something like this:
MultiValueMap<String,String> headers = new HttpHeaders();
for (Enumeration names = request.getHeaderNames(); names.hasMoreElements();) {
String name = (String)names.nextElement();
for (Enumeration values = request.getHeaders(name); values.hasMoreElements();) {
String value = (String)values.nextElement();
headers.add(name,value);
}
}
Solution
From the Javadocs:
@RequestHeader can be used on a Map, MultiValueMap, or HttpHeaders method parameter to gain access to all request headers.
More info is available online here and there.
Answered By - jtoberon
Answer Checked By - Willingham (JavaFixing Volunteer)