在发送之前编辑HTML响应

时间:2012-05-04 12:42:32

标签: java http response

我有一个Web服务,它将接收请求,在java中执行操作,然后以标准方式返回响应。

然而,客户期望响应,期望HTTP响应在消息的末尾附加两个字符(任何,无关紧要,目前只是\ n \ n,并且由于我不知道的原因 - 它是遗留的代码),在标题和正文之外。

目前通过首先将HTTP消息发送到代理来完成,代理会附加字符并转发消息,但是有没有人知道这种方法可以在java中完成而无需代理?

即。 - 我可以在发送之前访问完整的HTML响应进行编辑吗?

先谢谢你的帮助, 罗布

编辑:客户端不是浏览器,而是发送SOAP消息的应用程序。

2 个答案:

答案 0 :(得分:0)

假设这是按照servlet规范作为网络服务器运行的,你可以使用过滤器。

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 {

    }
}

答案 1 :(得分:0)

我们最终使用了apache-cxf拦截器,因为我们最终只需要完整的SOAP消息。通过添加将SoapMessage内容转换为字符串的传出拦截器,添加两个字符并再次设置内容,我们的问题已修复。

非常感谢!