- Servicios web basados en SOAP

SOAP (Simple Object Access Protocol) es el protocolo más utilizado en la actualidad para implementar servicios web. Fue creado por Microsoft, IBM y otros, aunque en la actualidad está bajo el auspicio de la W3C.

Utiliza como transporte HTTP, aunque también es posible utilizar otros métodos de transporte, como el correo electrónico. Los mensajes del protocolo se definen utilizando un estricto formato XML, que ha de ser consensuado por ambas partes. A continuación se muestra un posible ejemplo de mensaje SOAP

<soapenv:Envelope
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
    <soapenv:Header>
        <wsa:MessageID>
            uuid:920C5190-0B8F-11D9-8CED-F22EDEEBF7E5
        </wsa:MessageID>
        <wsa:To>
            http://localhost:8081/axis/services/BankPort
        </wsa:To>
    </soapenv:Header>
    <soapenv:Body>
        <axis2:echo xmlns:axis2="http://ws.apache.org/axis2">
            Hello World
        </axis2:echo>
    </soapenv:Body>
</soapenv:Envelope>

Un mensaje SOAP contiene una etiqueta <Envelope>, que encapsula las etiquetas <Header> y <Body>. La etiqueta <Header> es opcional y encapsula aspectos relativos a calidad del servicio, como seguridad, esquemas de direccionamiento, etc. La cabecera <Body> es obligatoria y contiene la información que las aplicaciones quieren intercambiar.

SOAP proporciona una descripción completa de las operaciones que puede realizar un nodo mediante una descripción WSDL (Web Services Description Language), por supuesto codificada en XML. En uno de los siguientes apartados crearemos un servicio web y podremos estudiar el fichero WSDL correspondiente.

Aunque SOAP está ampliamente extendido como estándar para el desarrollo de servicios web, no resulta muy adecuado para ser utilizado en Android. Esto es debido a la complejidad introducida, supone una sobrecarga que implica un menor rendimiento frente a otras alternativas como REST. Además, Android no incorpora las librerías necesarias para trabajar con SOAP.

No obstante, es posible que ya dispongas de un servidor basado en SOAP y necesites implementar un cliente en Android. En tal caso puedes utilizar las librerías kSOAP2 (http://ksoap2.sourceforge.net/).