Java 如何拦截和篡改 HTTP 响应?

How to intercept and tamper HTTP responses with Java?

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

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

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

重要:我只控制客户端,不控制服务器。因此我只能将Java accept/parse响应信封前面的BOM标志过滤掉,这样javax.xml才能正常解析。

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