2012-10-04 113 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