Programación Web en cliente

Desarrollar un cliente de servicios Web con NuSOAP

Una vez hemos localizado un servicio Web, tenemos la dirección del documento WSDL y tenemos claro los métodos que vamos a usar (en este caso ConversionRate) podemos empezar a escribir nuestro script de PHP para conectarnos al Web service.

Lo primero es incluir la librería nuSOAP:

require_once('lib/nusoap.php');

Después realizamos la conexión, creando un objeto nusoap_client:

Client = new nusoap_client($serverpath,true);

Donde la variable $serverpath es la url donde se encuentra el fichero WSDL de nuestro Web service, en nuestro ejemplo la dirección para el conversor de divisas : http://www.webservicex.net/CurrencyConvertor.asmx?WSDL. El segundo parámetro con valor “true” especifica que se trata de un documento WSDL.

Por último realizaremos la llamada al método elegido:

$respuesta = $client->call(“metodo”,[parametros],nameSpace);

En nuestro ejemplo, “metodo” será ConversionRate. Los parámetros serán dos, la divisa de origen FromCurrency (en este caso “USD”) y de destino ToCurrency (en este caso “EUR”). En nameSpace pondremos http://www.webserviceX.NET/. A continuación mostramos un código completo de una llamada al Web Service que nos devuelve la conversión de dolares a euros:

require_once('lib/nusoap.php'); //Incluimos la libreria nuSOAP

//Para evitar los STRICTS y WARNINGS especificamos la zona horaria
date_default_timezone_set("Europe/Madrid");

//Direccion donde se encuentra el documento WSDL
$serverpath ='http://www.webservicex.com/CurrencyConvertor.asmx?wsdl';

//Hacemos la peticion de conexion al web service de 
//cambio de divisas, pasamos la direccion donde
//se encuentra el archivo WDSL y especificamos que 
//se trata de este tipo de archivo
$cliente = new nusoap_client($serverpath,true);

//Comprobamos que no ha ocurrido ningun error
$error = $cliente->getError();
if($error!="")
{
   //Mostramos los errores
   echo "OCURRIO UN ERROR: ".$error;
}
else{
   //Llamamos al metodo 'ConversionRate' pasamos como 
   //parametro USD y EUR, ademas especificamos el namespace
   //como "http://www.webserviceX.NET/"
   $par = array("FromCurrency"=>"USD","ToCurrency"=>"EUR");
   $respuesta = $cliente->call('ConversionRate',
      $par,"http://www.webserviceX.NET/");

   //Comprobamos que no ha ocurrido ningun error
   $error = $cliente->getError();
   if($error!="")
   {
      //Mostramos los errores
      echo "OCURRIO UN ERROR: ".$error; 
   }
   else
   {
      //Mostramos el cambio
      echo print_r($respuesta);
   }
}