在Web服务请求中将字符串内容编码为XML

时间:2011-08-15 20:07:07

标签: web-services websphere-7

我正在处理一个问题,我必须使用从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>&lt;elemA&gt;&lt;elemB&gt;abc&lt;/elemB&gt;&lt;/elemA&gt;</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。

提前致谢。

巴勃罗

1 个答案:

答案 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>