【发布时间】:2017-10-25 14:33:25
【问题描述】:
我正在尝试使用 Apache CXF 3.1 访问第 3 方 Web 服务。当我使用 wsdl2java 生成的代码或 curl 调用服务时,服务会返回一个异常,指示该消息不是有效的 SOAP 消息。请参阅下面的消息。
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<connectivityTest xmlns="urn:cdc:iisb:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="connectivityTest">
<echoBack>Hello IIS!</echoBack>
</connectivityTest>
</soap:Body>
</soap:Envelope>
当我删除命名空间 (soap:) 并使用 curl 调用该服务时,该服务可以正常工作。请参阅下面的工作消息。
<?xml version="1.0" encoding="utf-8"?>
<Envelope xmlns="http://www.w3.org/2003/05/soap-envelope">
<Body>
<connectivityTest xmlns="urn:cdc:iisb:2011" xmlns:ns2="http://www.w3.org/2003/05/soap-envelope">
<echoBack>Hello IIS V2!</echoBack>
</connectivityTest>
</Body>
如何在发送 SOAP 消息之前从其 Envelope 和 Body 元素中删除命名空间?根据在网上搜索,我可能需要创建一个拦截器。如果有人能提供一个拦截器的例子来从 Envelope 和 Body 元素中删除命名空间,那将不胜感激。
提前致谢! JR
【问题讨论】: