2012-05-04 84 views
1

我有一個web服務將要接收請求,在java中執行一個動作,然後返回一個響應作爲標準。發送之前編輯HTML響應

然而,期待響應的客戶希望HTTP響應將兩個字符添加到消息的末尾(任何,沒關係,目前只是\ n \ n,並且出於我未知的原因 - 它是遺留代碼),在標題和正文之外。

目前它是通過首先發送HTTP消息到代理來完成的,該代理附加了字符並轉發了消息,但是有誰知道這種方式可以在java中完成,而無需代理?

I.e. - 我可以在發送之前訪問完整的HTML響應以進行編輯嗎?

預先感謝您的幫助, 羅布

編輯:客戶端不是一個瀏覽器,而是一個應用程序發送SOAP消息。

+0

是的,你可以這樣做。這取決於你如何向瀏覽器發送響應。 – Ved

+0

響應沒有發送到瀏覽器,而是作爲從應用程序到服務的SOAP消息返回? – TheBloodGuy

+0

你在servlet規範中運行這個嗎? Tomcat的?如果是這樣,你可以用過濾器來做到這一點。 – Krrose27

回答

0

我們最終使用了apache-cxf攔截器,因爲我們最終只需要完整的SOAP消息。通過添加將SoapMessage內容轉換爲字符串的傳出攔截器,添加兩個字符並再次設置內容,我們的問題已修復。

無論如何,謝謝!

0

假設這是按照servlet規範運行的web服務器,則可以使用過濾器。

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.annotation.WebFilter; 
import javax.servlet.http.HttpServletResponse; 

@WebFilter(asyncSupported = true, filterName = "LegacyAppender", urlPatterns = { "/paths/tofile" }) 
public class AppendFilter implements Filter { 

    @Override 
    public void destroy() { 

    } 

    @Override 
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { 
     chain.doFilter(req, resp); 
     HttpServletResponse hsr = (HttpServletResponse) resp; 
     hsr.getWriter().print("\r\n"); 
    } 

    @Override 
    public void init(FilterConfig arg0) throws ServletException { 

    } 
}