1

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

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

目前它是通过首先将 HTTP 消息发送到代理来完成的,该代理附加字符并转发消息,但是有没有人知道在不需要代理的情况下可以在 java 中完成此操作的方法?

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

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

4

2 回答 2

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 {

    }
}
于 2012-05-04T12:57:45.620 回答
0

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

不管怎么说,还是要谢谢你!

于 2012-12-21T09:22:39.653 回答