我正在处理一个问题,我必须使用从WSDL开发的遗留Web服务客户端,该客户端将实际的XML请求作为请求中唯一一个变量的值传递。我现在正在使用的Web服务有一个不同的WSDL,我试图欺骗我的XML解析器,但它正在编码我的实际XML响应。
无论如何都要配置解析器以便请求:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<request><elemA><elemB>abc</elemB></elemA></request>
</soapenv:Body>
</soapenv:Envelope>
改为:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<foo>
<elemA>
<elemB>abc</elemB>
</elemA>
</foo>
</soapenv:Body>
</soapenv:Envelope>
我正在使用JAX-WS和WebSphere 7。
提前致谢。
巴勃罗
答案 0 :(得分:0)
去年我不得不处理这种情况,我的解决方案是将XML内容包含在CDATA部分内的soap消息中。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<![CDATA[
<foo>
<elemA>
<elemB>abc</elemB>
</elemA>
</foo>
]]
</soapenv:Body>
</soapenv:Envelope>