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

如何用Java拦截和篡改HTTP响应?,java,xml,soap,jax-ws,byte-order-mark,Java,Xml,Soap,Jax Ws,Byte Order Mark,我有一个Java应用程序执行不同的http请求,我不直接控制这些请求(通过Jaxws生成的客户端执行SOAP请求)。我在XML prolog前面的BOM标志方面遇到了一些困难,这是我目前想要避免的。在让javax.xml解析正确的SOAP信封之前,我想截取HTTP响应并对其进行篡改 现在我要问的问题是:如何在不需要Fiddler或任何其他代理的情况下用Java优雅地拦截任何HTTP响应? 我可以实现代理类之类的功能并在HTTP连接工厂中注册它吗? 有可能实现一个“真正的”http代理来为我做清理

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

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

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


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

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

我建议您使用过滤器或方面。您使用哪种JAX-WS实现?CXF?Axis?…HTTP筛选器就是您想要的。这很有帮助。SOAP服务意味着HTTP上的XML,因此servlet/HTTP过滤器正是正确的选择。您还可以尝试使用hex editor查找是否存在
bom
。而不是在连接中。你无法控制这些。它应用于服务。我用弹簧;这对我来说很容易。如何部署您的服务?哪个应用服务器?