Cómo programar un sencillo cliente SOAP en PHP

Un web service o servicio web, es una serie de protocolos que permiten comunicar dos máquinas a través de una red, a través de una serie de mensajes establecidos previamente.

Una forma de implementar un web service es a través del protocolo de comunicaciónSOAP, que se trata de un protocolo basado en XML y tiene la ventaja de poderse implemenentar en cualquier modelo de programación. En este caso, vamos a realizar un sencillo ejemplo de programar un sencillo cliente SOAP en PHP.

En la página oficial de PHP tenéis documentación:http://es.php.net/manual/en/class.soapclient.php. Pero que levante la mano el que ha conseguido aprender algo, únicamente con la web oficial de PHP.

Comenzamos!

 

Antes de comenzar tienes que tener en cuenta:
1. Para implementear un cliente SOAP en PHP necesitas primero de todo es activar la clase SOAP CLIENT de PHP. Puedes comprobar haciendo un «phpinfo ();» para comprobar que está activo. Si no fuera así, habla con tu proveedor de hosting.

2. Averigua si el WSDL (web service description language) está incluido en el ENDPOINT. El WSDL es un descriptor que se utiliza para componer el mensaje que mandes a través de PHP en el formato XML correcto. El ENDPOINT es una URL que identifica la ubicación del servicio (ej. http://….).
Casos posibles:
2.1 El WSDL está incluido en el ENDPOINT.
Cuando este descriptor se obtiene automáticamente al acceder al ENDPOINT. Se accede a él a través de la sintaxis:
ENDPOINT?wsdl
ej. http://nombre_host/ruta?wsdl
2.2 El WSDL no está incluido en el ENDPOINT.
Tendrás un archivo con extensión .wsdl que habrá que subir a tu servidor para luego llamarlo en PHP.
3. Tienes que conocer las funciones a utilizar y el tipo de valor que devuelven. El valor devuelto será un array con una estructura que deberás conocer.
Hay una función que puedes invocar para mostrar todas las funciones disponibles:
$client = new SoapClient(PARAMETROS-DEL-SERVIDOR);
print_r($client->__getFunctions());

Si tienes claro todos los puntos hasta ahora, a continuación tienes un ejemplo sencillo de webservice SOAP en PHP. De faltarte algún dato, no intentes hacer pruebas, porque lo único que conseguirás es perder el tiempo y los nervios.
CÓDIGO PHP:
 //Ruta del EndPoint    
$endpoint = «http://nombre_host/ruta_del_servicio»;
$wsdlFile= «nombre_archivo.wsdl»;

 //Creación del cliente SOAP
$clienteSOAP = new SoapClient($wsdlFile,array(
‘location’=>$endpoint,
‘trace’=>true,
‘exceptions’=>false));
 //Incluye los parámetros que necesites en tu función
$parameters= array(
«parametro1″=>»valor1»,
«parametro2″=>»valor2»);
  //Invocamos a una función del cliente, devolverá el resultado en formato array.
$valor = $client->nombre_funcion($parameters);

  //Puedes usar un printr($valor) para ver el contenido del array multidimensional
  //Aquí tienes un ejemplo de cómo acceder a un valor concreto dentro del array    
$localizador=$value->nombre_de_la_clave_del_array;
  //A continuación podrás continuar con tu código PHP o invocar más funciones SOAP        
header(«location:http://http://nombre_host/ruta_del_servicio?variable1=».$valor1.»&variable2=».$valor2);