2012-10-04 68 views
4

我知道v3.0的方法是getHeader()但是2.3呢?也许有可能从蒸汽中解脱出来?如何从Servlet 2.3或2.5中的响应中获取标头

UPDATE:

事实上,我所需要的HTTP响应报头RESTful应用程序。由于某种原因,我决定在servlet过滤器中执行此操作...但没有成功... 解决方案@javax.ws.rs.core.Context HttpHeaders requestHeaders

例如,

@javax.ws.rs.GET 
public String invoceRestMethod(@Context HttpHeaders requestHeaders){ 
     MultivaluedMap<String, String> map = headers.getRequestHeaders(); 
     for (Map.Entry<String, List<String>> entry : map.entrySet()) { 
     // processing header.... 
     }  
} 

也许在别人的帮助。但任何情况下,对于Servlet问题仍然是打开

回答

5

您不能从流*得到头。

在你的Servlet被调用之前,你需要做的是在代理响应对象中插入一个代理响应对象,并捕获头文件。


*其实,你可能从使用代理服务器的响应流捕获的东西和解码头。但是,如果您要插入代理响应,则直接捕获标头会更简单。

+0

我想你谈谈HttpServletResponseWrapper(HttpServletResponse)。我想,我想。但我怎么能知道标题的长度? – Tioma

+1

你不需要知道这一点。你为包装器创建子类,重写'setHeader'方法来记录你感兴趣的头文件。 –

+0

Hi Stephen。我试图刺激这一点。只有在我自己调用Servlet中的setHeader方法的情况下才有效。但我需要完整的HTTP标头。你有什么想法吗? – Tioma