我有一个Web服务,它将接收请求,在java中执行操作,然后以标准方式返回响应。
然而,客户期望响应,期望HTTP响应在消息的末尾附加两个字符(任何,无关紧要,目前只是\ n \ n,并且由于我不知道的原因 - 它是遗留的代码),在标题和正文之外。
目前通过首先将HTTP消息发送到代理来完成,代理会附加字符并转发消息,但是有没有人知道这种方法可以在java中完成而无需代理?
即。 - 我可以在发送之前访问完整的HTML响应进行编辑吗?
先谢谢你的帮助, 罗布
编辑:客户端不是浏览器,而是发送SOAP消息的应用程序。
答案 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内容转换为字符串的传出拦截器,添加两个字符并再次设置内容,我们的问题已修复。
非常感谢!