Trabajando con SOAP

SOAP (Simple Object Access Protocol) es un protocolo de intercambio de mensajes basado en XML que se basa en protocolos de capa de aplicación como HTTP para la negociación y transmisión de mensajes. El Consorcio World Wide Web (W3C) mantiene la especificación SOAP.

El documento de especificaciones SOAP está disponible en https://www.w3.org/TR/soap/.

El mensaje SOAP es un documento XML compuesto por elementos Envelope, Header, Body y Fault:

<?xml version="1.0" ?>
<env:Envelope>
<env:Header>
<env:Header>
<!-- ... -->
</env:Header>
<env:Body>
<!-- ... -->
<env:Fault>
<!-- .. -->
</env:Fault>
</env:Body>
</en:Envelope>

El Envelope es un elemento obligatorio de cada solicitud SOAP, ya que envuelve un mensaje SOAP completo. Del mismo modo, el elemento Body también es necesario, ya que contiene información de solicitud y respuesta. Header y Fault, por otro lado, son elementos opcionales. Usando simplemente mensajes de solicitud-respuesta basados en XML, podemos establecer comunicación cliente-servidor a través de HTTP. Si bien el intercambio de mensajes XML puede parecer simple, puede volverse engorroso cuando uno tiene que lidiar con una gran cantidad de llamadas a métodos y tipos de datos.
Aquí es donde entra en juego WSDL. WSDL es un lenguaje de definición de interfaz que se puede utilizar para definir los tipos de datos y las operaciones de un servicio web. El W3C mantiene la especificación WSDL.

El documento de especificación WSDL está disponible en https://www.w3.org/TR/wsdl.

Se utilizan un total de seis elementos principales para describir el servicio, según el siguiente ejemplo parcial:

<?xml version="1.0" ?>
<definitions>
<types>
<!-- ... -->
</types>
<message>
<!-- .. -->
</message>
<portType>
<!-- ... -->
</portType>
<binding>
<!-- ... -->
</binding>
<port>
<!-- ... -->
</port>
<service>
<!-- ... -->
</service>
</definitions>

Si bien WSDL no es necesario para que nuestro servicio sea operativo, ciertamente es útil para los clientes que consumen nuestro servicio SOAP. Lamentablemente, PHP carece de herramientas oficiales para la generación fácil de archivos WSDL basados en las clases PHP que utiliza nuestro servicio SOAP. Esto hace tedioso y lento para los desarrolladores de PHP escribir archivos WSDL manualmente, por lo que algunos desarrolladores tienden a pasar por alto el WSDL por completo.
Dejando de lado temporalmente la generación de archivos WSDL, es seguro decir que la única parte realmente desafiante del servicio SOAP es escribir y leer mensajes XML. Aquí es donde las extensiones PHP son útiles.

Comparte