2010-12-22 7 views
1

Ich implementiere den SOAP-Client zu einem bestehenden Dienst, von dem ich eine WSDL-Datei habe.SOAP href XML-Mapping-Problem - welche Zuordnung hilft?

Ich benutze axis2 - http://axis.apache.org/axis2/java/

ich Problem mit der Zuordnung zu Klassen mit bin: WSDL gibt nur 3 mögliche Antworten:

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

Aber die eigentliche Antwort ist ein wenig kompliziert, tatsächliche Antwort ist nicht im Element, aber das Element enthält Attribut soap: Verweis auf Seife: multiRef Element über seine ID.

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

Ist dieses Verhalten normal (Seife http://schemas.xmlsoap.org/soap/envelope/ ist)? (Achse erlaubt mir, xmlbeans oder adb Mapping zu verwenden, aber nicht davon funktioniert)

Ich bin nicht viel in XML, also bin ich nicht sicher, ob href wenn Standard oder nicht. (Ich kann den Service nicht ändern!)

Antwort

1

Es ist RPC/Codiertes Format von SOAP, die nicht mehr von Hauptframeworks unterstützt wird. Sie müssen Axis (1) verwenden, um mit diesen Dingen fertig zu werden.