【问题标题】:How to intercept and tamper HTTP responses with Java?如何使用 Java 拦截和篡改 HTTP 响应?
【发布时间】:2016-03-28 20:53:46
【问题描述】:

我有一个 Java 应用程序执行我不直接控制的不同 http 请求(通过 Jaxws 生成的客户端的 SOAP 请求)。我目前想要避免的 XML prolog 前面的 BOM 标志存在一些困难。我想在让 javax.xml 解析正确的 SOAP 信封之前拦截 HTTP 响应并对其进行篡改。

现在我的问题是:如何在不需要 Fiddler 或任何其他代理的情况下使用 Java 优雅地拦截任何 HTTP 响应?
我可以实现类似代理类的东西并在 HTTP 连接工厂中注册它吗?
是否有可能实现一个“真正的”http 代理为我做清理工作?

我正在使用 org.codehaus.mojo:jaxws-maven-plugin:2.4.1 和 Maven 从 WSDL 创建存根。

重要提示:我只控制客户端,不控制服务器。所以只能让Java接受/解析响应信封前的BOM标志或者过滤掉,让javax.xml正常解析。

【问题讨论】:

  • 我建议您使用过滤器或方面。
  • 您使用的是哪个 JAX-WS 实现? CXF?轴心?...
  • HTTP 过滤器是您想要的。这是最有帮助的。 SOAP 服务意味着 XML over HTTP,因此 servlet/HTTP 过滤器是正确的。
  • 您也可以尝试使用十六进制编辑器查找是否有bom
  • 不在连接中。你无法控制这些。它应用于服务。我用弹簧;这对我来说很容易。你如何部署你的服务?哪个应用服务器?

标签: java xml soap jax-ws byte-order-mark


【解决方案1】:

您可以使用 cxf 拦截器。它们应该允许您在输入链的任何阶段处理消息。他们很好地描述了here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    相关资源
    最近更新 更多