I. Introducción a WSDL

Versión para imprimir.

1. WSDL

Fuente: https://es.wikipedia.org/wiki/Simple_Object_Access_Protocol

2. Elementos de WSDL

types

Define los tipos de datos usados en los mensajes. Se utilizan los tipos definidos en la especificación XML Schema.

message

Define los elementos de mensaje. Cada mensaje puede consistir en una serie de partes lógicas. Las partes pueden ser de cualquiera de los tipos definidos en el elemento message.

portType

Define las operaciones permitidas y los mensajes intercambiados en el Servicio.

binding

Especifica los protocolos de comunicación usados.

service

Conjunto de puertos y dirección de los mismos. Esta parte final hace referencia a lo aportado por las secciones anteriores.

Con estos elementos no sabemos qué hace un servicio pero sí disponemos de la información necesaria para interactuar con él (funciones, mensajes de entrada/salida, protocolos, etcétera).

3. Ejemplo de WSDL

1<definitions name=“PrecioProd“
2 targetNamespace="http://example.com/stockquote.wsdl"
3 xmlns:tns="http://example.com/stockquote.wsdl"
4 xmlns:xsd1="http://example.com/stockquote.xsd"
5 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
6 xmlns="http://schemas.xmlsoap.org/wsdl/">
7 <types>
8 <schema targetNamespace="http://example.com/stockquote.xsd"
9 xmlns="http://www.w3.org/2000/10/XMLSchema">
10 <element name="SolPrecioProd">
11 <complexType>
12 <all>
13 <element name="productoId" type="decimal"/>
14 </all>
15 </complexType>
16 </element>
17 <element name="PrecioProd">
18 <complexType>
19 <all>
20 <element name="precio" type="float"/>
21 </all>
22 </complexType>
23 </element>
24 </schema>
25 </types>
26 <message name="InputGetPrecioProd">
27 <part name="body" element="xsd1:SolPrecioProd"/>
28 </message>
29 <message name="OutputGetPrecioProd">
30 <part name="body" element="xsd1:PrecioProd"/>
31 </message>
32 <portType name="PortTypePrecioProd">
33 <operation name="GetPrecioProd">
34 <input message="tns:InputGetPrecioProd"/>
35 <output message="tns:OutputGetPrecioProd"/>
36 </operation>
37 </portType>
38 <binding name="BindPrecioProdSoap" type="tns:PortTypePrecioProd">
39 <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
40 <operation name="GetPrecioProd">
41 <soap:operation soapAction="http://example.com/GetPrecioProd"/>
42 <input>
43 <soap:body use="literal"/>
44 </input>
45 <output>
46 <soap:body use="literal"/>
47 </output>
48 </operation>
49 </binding>
50 <service name="ServPrecioProd">
51 <documentation>Devuelve el precio de un producto.</documentation>
52 <port name="PuertoPrecioProd" binding="tns:BindPrecioProdSoap">
53 <soap:address location="http://example.com/precioprod"/>
54 </port>
55 </service>
56</definitions>