SOAP href XML映射问题 - 哪种映射有帮助?

时间:2010-12-22 14:20:47

标签: java xml web-services soap

我正在将SOAP客户端实现到我拥有WSDL文件的现有服务。

我使用axis2 - http://axis.apache.org/axis2/java/

我遇到了映射到类的问题: WSDL仅指定了3种可能的响应:

 <wsdl:types>
  <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://request.pgw.muzo.com">
   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
   <complexType name="Response">
    <sequence>
     <element name="digest" nillable="true" type="xsd:string"/>
     <element name="ok" type="xsd:boolean"/>
     <element name="primaryReturnCode" type="xsd:int"/>
     <element name="secondaryReturnCode" type="xsd:int"/>
     <element name="requestId" type="xsd:long"/>
    </sequence>
   </complexType>
   <complexType name="OrderResponse">
    <complexContent>
     <extension base="tns2:Response">
      <sequence>
       <element name="orderNumber" nillable="true" type="xsd:string"/>
      </sequence>
     </extension>
    </complexContent>
   </complexType>
   <complexType name="OrderStateResponse">
    <complexContent>
     <extension base="tns2:OrderResponse">
      <sequence>
       <element name="state" type="xsd:int"/>
      </sequence>
     </extension>
    </complexContent>
   </complexType>
  </schema>
 </wsdl:types>

但是实际响应有点复杂,实际响应不在元素中,但elemnt包含属性soap:href通过它的id向soap:multiRef元素提供。 (肥皂是http://schemas.xmlsoap.org/soap/envelope/

<soapenv:Body>
  <ns1:queryOrderStateResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:ns1="http://webservices.pgw.muzo.com">
   <queryOrderStateReturn href="#id0" />
  </ns1:queryOrderStateResponse>
  <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
   xsi:type="ns2:OrderStateResponse" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="http://request.pgw.muzo.com">
   <digest xsi:type="soapenc:string">AAA</digest>
   <ok href="#id1" />
   <orderNumber xsi:type="soapenc:string">232</orderNumber>
   <primaryReturnCode href="#id2" />
   <secondaryReturnCode href="#id3" />
   <state href="#id4" />
   <requestId href="#id5" />
  </multiRef>
    ...
    </soapenv:Body>

这种行为是正常的吗? (轴允许我使用xmlbeans或adb映射但不适用于此)

我对XML并不多,所以如果href是标准与否,我就不会感到害羞。 (我不能改变服务!)

1 个答案:

答案 0 :(得分:1)

它是主要框架不再支持的SOAP的RPC /编码格式。你必须使用Axis(1)处理这些东西。