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);
}
}