在项目中,我们必须调用已存在多年且无法修改的Web服务。此Web服务包含一个错误:当它向SOAP请求发送响应时,响应并不总是包含所需的< S:Envelope>和< S:Body>元件。
在JAX-WS SOAP解析器解析消息之前,我们如何拦截消息并插入缺失的部分?
答案 0 :(得分:0)
我看到这个问题仍未解决,所以我将提供一些有关如何解决问题的见解。
实际上,JAX-WS不提供任何支持来完成这类工作。可能可以查看实现的细节并在那里添加一个钩子,但随后您的解决方案不再可移植到其他Web服务容器实现。
我们的最终解决方案是切换到Commons HTTP Client以发送消息并接收响应。消息本身是使用普通的JAXB创建和解析的。手动添加和删除SOAP标头。