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
et mon FakeHeadersRequest extends HttpServletRequestWrapper
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 { } }
Mon appli tourne sous TOMCAT 6
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Quelqu'un à une idée du problème ?
Partager