2010-09-28 137 views
1

我需要實現類似過濾器或偵聽器的東西,它攔截HTTP請求併爲各種目的檢索HTTP頭。攔截服務器java中的HTTP請求

我使用Java,Jboss應用程序服務器和Web服務。我希望這個過濾系統在Web服務調用之前執行 - 正在考慮方面,但他們不保留HTTP相關的東西。過濾器後,應執行服務呼叫。

由於Jax-WS處理程序只保存SOAP有效內容,因此不適用於我。

任何想法?

在此先感謝。

回答

3

你能不能創建一個servlet過濾器來攔截所有來到你的web服務引擎的請求?如果您使用的是Axis或其他SOAP引擎,那麼我希望您應該能夠創建一個過濾器來攔截所有到達SOAP引擎提供的主Servlet的請求。

public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException 
    { 
    HttpServletRequest httpRequest=(HttpServletRequest)request; 
    HttpServletResponse httpResponse=(HttpServletResponse)response; 
     Enumeration headerNames = httpRequest.getHeaderNames(); 
     while(headerNames.hasMoreElements()) { 
      String headerName = (String)headerNames.nextElement(); 
      out.println(headerName); 
      out.println(request.getHeader(headerName)); 
     } 
     chain.doFilter(request,response); 
} 
+0

據我所知,過濾器接口只提供ServeletRequest和ServletResponse,它們不包含HTTP相關信息。編輯:我會需要HttpServletRequest對象。我可能在這裏錯過了什麼嗎? – Pascal 2010-09-28 19:36:54

+0

幾乎所有你需要的應該在那裏..查看這裏的示例代碼。 – Shamik 2010-09-28 19:39:20

+0

更多關於這裏http://download.oracle.com/javaee/1.3/api/javax/servlet/http/HttpServletRequest.html#getHeaderNames() – Shamik 2010-09-28 19:40:50

0

使用libpcap和Java接口jNetPcap

+0

感謝您的回覆。看了一下,看起來非常像低級API。我只需要提取HTTP頭。它是否允許攔截器與Web服務等其他組件進行鏈接? – Pascal 2010-09-28 19:34:14