2012-04-02 18 views
10

¿Puedo tener un WSDL que solo use datos XML simples y no SOAP?Servicio WSDL para XML simple en lugar de SOAP

Si es así, ¿podría proporcionarme una muestra WSDL?

+0

SOAP es el formato de intercambio estándar para WSDL, que también es XML válido. ¿Puedes dar un ejemplo de lo que quieres? –

+1

Tenga en cuenta que WSDL significa Web Services Definition Language, por lo que será difícil separar un WSDL de SOAP – KevinDTimm

Respuesta

14

Sí, el envío de datos XML simples a través de HTTP se puede describir en WSDL. En lugar de usar <soap:binding> al definir el enlace de su operación, en su lugar usaría <http:binding>. Por ejemplo:

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

puede encontrar información adicional acerca del uso de un enlace de aquí HTTP: http://docs.oracle.com/cd/E19182-01/821-0830/cnfg_http-bc-get-processing_r/index.html

+1

Estoy seguro de que esto es correcto, pero siempre obtengo 'El elemento de extensión WSDL requerido 'binding' del espacio de nombres 'http: //schemas.xmlsoap.org/wsdl/http/ 'no se manejó'. XML es tan frustrante ... – Auspex

+1

En Eclipse, tuve que eliminar la parte de esta muestra wsdl para crear un servicio web y un cliente de servicio web. (Por supuesto, también reemplace "tns: content" con otro tipo, por ejemplo, "xsd: string"). –