¿Qué es y como funciona el protocolo SOAP?

No hablamos de sopa ni de series de televisión, hablamos de Simple Object Access Protocol. es un protocolo de comunicaciones remotas estándar desarrollado por Microsoft, IBM y otros autores importantes del sector. En la actualidad este protocolo está bajo el auspicio del W3C.

Un mensaje bajo este protocolo tiene los siguientes elementos:
  • Envelope (Envoltorio): Establece la estructura e identifica el mensaje como SOAP.
  • Header (Cabecera): Envía información de como debe de ser procesado el mensaje,
  • Body (obligatorio): Contiene la información relativa a la llamada y la respuesta.
  • Fault (Fallo): Bloque que contiene información relativa a errores.
El modelo de procesado es un sistema distribuido en el que intervienen diferentes nodos que se organizan según los roles:
  • Sender: Nodo que envía un mensaje.
  • Receiver: Nodo que recibe un mensaje.
  • Message path: Conjunto de nodos por los cuales asa el mensaje, incluyendo el inicial y el final.
  • Initial Sender: Emisor inicial.
  • Intermediary: Intermediario.
  • Ultimate receiver: Receptor final del mensaje.
Un nodo puede efectuar varios roles a la vez.

SOAP puede funcionar bajo http pero también bajo smtp (emails).

Ejemplo de solicitud:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <getProductDetails xmlns="http://soap.example.com/ws">
       <productId>3526532</productId>
     </getProductDetails>
   </soap:Body>
</soap:Envelope>

Ejemplo de respuesta:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <getProductDetailsResponse xmlns="http://soap.example.com/ws">
       <getProductDetailsResult>
         <productName>Pelador de patatas</productName>
         <productId>3526532</productId>
         <description>El mejor pelador del mercado.</description>
         <price>96.50</price>
         <inStock>true</inStock>
       </getProductDetailsResult>
     </getProductDetailsResponse>
   </soap:Body>
 </soap:Envelope>

Con Java y con .NET este tipo de protocolo funciona muy bien, pero con PHP o con Python su implementación es incompleta, puedes usarlo pero no tienes acceso a todos los elementos del proceso.

Comentarios