Crear cliente SOAP en PHP

Crear un cliente SOAP en PHP es una tarea relativamente simple cuando usamos la clase SoapClient. Creemos el archivo soap-service/client/index.php con el siguiente contenido:

<?php
$options = [
'location' => 'http://soap-service.server/index.php',
'uri' => 'http://soap-service.server/index.php',
'trace ' => true,
];
// NON-WSDL MODE: $client = new SoapClient($wsdl = null, $options);
// WSDL MODE: $client = new
SoapClient('http://soap-service.server/wsdl.xml', $options);
$client = new SoapClient('http://soap-service.server/wsdl.xml', $options);
echo $client->customerWelcome('John');
echo $client->userWelcome('Mariya');

La ejecución del código del cliente debería dar como resultado el siguiente resultado:

Lo que sucede debajo del capó cuando se emite la solicitud SOAP se puede observar con herramientas de red como Wireshark:

Esto nos muestra el contenido exacto de una solicitud SOAP individual, como la de $client->customerWelcome(‘John’):

POST /index.php HTTP/1.1
Host: soap-service.server
Connection: Keep-Alive
User-Agent: PHP-SOAP/7.0.10
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://soap-service.server/index.php#customerWelcome"
Content-Length: 525
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAPENV=" http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soap-service.server/index.php" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <ns1:customerWelcome> <name xsi:type="xsd:string">John</name> </ns1:customerWelcome> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

Comprender la estructura y el contenido de la solicitud SOAP hace posible incluso usar las funciones cURL para manejar la comunicación de request-response, aunque eso sería mucho más engorroso y propenso a errores que tratar con las clases SoapClient y SoapServer.
A lo largo de esta sección, hemos tocado algunos de los puntos clave de los servicios SOAP. Si bien hay mucho más que decir sobre la especificación SOAP, los ejemplos presentados aquí son un buen punto de partida para escribir servicios SOAP.
Una variante algo más simple de un servicio web sería REST.

Comparte