Ajout de param dans le HEADER avec javax.servlet.Filter et javax.servlet.http.HttpServletRequestWrapper
Bonjour je ne comprend pas pourquoi ca ne fonctionne pas.
Ce code me créé bien 2 headers :
MY-HEADER-X2
MY-HEADER-X1
mais sans les valeurs ("header 1","header 2") que je lui est précisé.
Voici mon code avec : RequestHeaderFilter implements javax.servlet.Filter
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class RequestHeaderFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
FakeHeadersRequest httpReq = new FakeHeadersRequest((HttpServletRequest)servletRequest);
HttpServletResponse httpRes = (HttpServletResponse)servletResponse;
HttpSession session = httpReq.getSession();
httpReq.addHeader("MY-HEADER-X1", "header 1");
httpReq.addHeader("MY-HEADER-X2", "header 2");
filterChain.doFilter(httpReq, httpRes);
}
public void init(FilterConfig filterConfig) throws ServletException {
}
} |
et mon FakeHeadersRequest extends HttpServletRequestWrapper
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.util.*;
public class FakeHeadersRequest extends HttpServletRequestWrapper{
private Map headerMap;
public void addHeader(String name, String value){
headerMap.put(name, new String(value));
}
public FakeHeadersRequest(HttpServletRequest request){
super(request);
headerMap = new HashMap();
}
public Enumeration getHeaderNames(){
HttpServletRequest request = (HttpServletRequest)getRequest();
List list = new ArrayList();
for( Enumeration e = request.getHeaderNames() ; e.hasMoreElements() ;)
list.add(e.nextElement().toString());
for( Iterator i = headerMap.keySet().iterator() ; i.hasNext() ;){
list.add(i.next());
}
return Collections.enumeration(list);
}
public String getHeader(String name){
Object value;
if((value = headerMap.get(""+name)) != null)
return value.toString();
else
return ((HttpServletRequest)getRequest()).getHeader(name);
} |
Mon appli tourne sous TOMCAT 6
Quelqu'un à une idée du problème ?