2012-05-04 57 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 { 

    } 
}