【问题标题】:Edit HTML Response before sending发送前编辑 HTML 响应
【发布时间】:2012-05-04 12:42:32
【问题描述】:

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

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

目前它是通过首先将 HTTP 消息发送到代理来完成的,该代理会附加字符并转发消息,但有谁知道在 java 中无需代理即可完成此操作的方法吗?

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

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

【问题讨论】:

  • 是的,您可以这样做。这取决于你如何向浏览器发送响应。
  • 响应不是发送到浏览器,而是作为 SOAP 消息从应用程序到服务并返回?
  • 您是否在 servlet 规范中运行它?雄猫?如果是这样,您可以使用过滤器来完成。
  • @Krroae27 目前还没有,但正在发生变化,你能扩展一下吗?谢谢!
  • 我添加了答案,因为它是一大块代码。

标签: java http response


【解决方案1】:

假设这是按照 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 {

    }
}

【讨论】:

    【解决方案2】:

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

    还是谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-29
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多