2012-04-02 11 views
10

Czy mogę mieć WSDL, który będzie używał zwykłych danych XML, a nie SOAP?Usługa WSDL dla zwykłego XML zamiast SOAP

Jeśli tak, proszę podać mi przykładowy plik WSDL?

+0

SOAP jest standardowym formatem wymiany dla WSDL, który jest również ważna XML. Czy możesz podać przykład tego, czego chcesz? –

+1

Należy zauważyć, że WSDL oznacza język definicji usług WWW - więc trudno będzie oddzielić WSDL od SOAP – KevinDTimm

Odpowiedz

14

Tak, wysyłanie zwykłych danych XML przez HTTP można opisać w WSDL. Zamiast używać <soap:binding> podczas definiowania powiązania operacji, należy zamiast tego użyć <http:binding>. Na przykład:

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

można znaleźć dodatkowe informacje na temat korzystania HTTP wiążącą tutaj: http://docs.oracle.com/cd/E19182-01/821-0830/cnfg_http-bc-get-processing_r/index.html

+1

Jestem pewien, że to prawda, ale zawsze otrzymuję 'Wymagany element rozszerzenia WSDL 'binding' from namespace 'http: //schemas.xmlsoap.org/wsdl/http/ "nie było obsługiwane". XML jest tak frustrujący ... – Auspex

+1

W Eclipse, musiałem usunąć część tego przykładu wsdl, aby utworzyć usługę internetową i klienta usługi WWW. (Oczywiście, zastąp także "tns: content" innym typem, np. "Xsd: string"). –