【发布时间】: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