2012-04-02 4 views
10

Kann ich eine WSDL verwenden, die nur einfache XML-Daten und nicht SOAP verwendet?WSDL-Dienst für einfaches XML anstelle von SOAP

Wenn ja, können Sie mir bitte eine Beispiel-WSDL zur Verfügung stellen?

+0

SOAP das Standard-Austauschformat für WSDL, die auch gültig ist XML. Können Sie ein Beispiel geben, was Sie wollen? –

+1

Beachten Sie, dass WSDL für Web Services Definition Language steht - daher wird es schwierig sein, eine WSDL von SOAP zu trennen – KevinDTimm

Antwort

14

Ja, das Senden reiner XML-Daten über HTTP kann in WSDL beschrieben werden. Anstatt <soap:binding> zu verwenden, wenn Sie die Bindung Ihrer Operation definieren, verwenden Sie stattdessen <http:binding>. Zum Beispiel:

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:example" xmlns:tns="urn:example"> 
    <types> 
     <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:example"> 
     <element name="content"> 
      <complexType> 
      <sequence> 
       <element name="first" type="string"/> 
       <element name="second" type="integer"/> 
      </sequence> 
      </complexType> 
     </element> 
     </schema> 
    </types> 

    <message name="id"> 
     <part name="id" type="xsd:string"/> 
    </message> 

    <message name="info"> 
     <part name="info" type="tns:content"/> 
    </message> 

    <portType name="widgetPortType"> 
     <operation name="getInfo"> 
     <input message="tns:id"/> 
     <output message="tns:info"/> 
     </operation> 
    </portType> 

    <binding name="binding" type="tns:widgetPortType"> 
     <http:binding verb="POST"/> 
     <operation name="getInfo"> 
     <http:operation location="getInfo"/> 
     <input> 
      <mime:content type="application/x-www-form-urlencoded"/> 
     </input> 
     <output> 
      <mime:mimeXml/> 
     </output> 
     </operation> 
    </binding> 

    <service name="widgetService"> 
     <port name="port" binding="tns:binding"> 
     <http:address location="http://www.example.org/"/> 
     </port> 
    </service> 

</definitions> 

können Sie zusätzliche Informationen finden über eine HTTP-Bindung hier: http://docs.oracle.com/cd/E19182-01/821-0830/cnfg_http-bc-get-processing_r/index.html

+1

Ich bin mir sicher, dass dies richtig ist, aber ich bekomme immer 'das erforderliche WSDL-Erweiterungselement 'binding' vom Namespace 'http: //schemas.xmlsoap.org/wsdl/http/ wurde nicht behandelt. XML ist so frustrierend ... – Auspex

+1

In Eclipse musste ich den Teil dieses WSDL-Beispiels entfernen, um einen Web-Service und einen Web-Service-Client zu erstellen. (Ersetzen Sie natürlich auch "tns: content" durch einen anderen Typ, zB "xsd: string"). –

Verwandte Themen