Posibles usos para NuSOAP y conclusiónes finales.
¿Cómo lo podemos usar?:
Existen muchas formas en que podríamos usar este Web Service, podemos dejar que el visitante seleccione su país y localidad, y que nuestro sitio le retorne cual es el pronostico actual (solo deberíamos incorporar un paso anterior al que se ofrece en el código, el de selección del país).
Otro uso que podemos darle es el de mostrar cual es el clima actual para una localidad determinada (lo mismo que hacen muchos diarios en sus cabeceras). Si decidimos implementar la segunda opción debemos tener especial cuidado en como lo hacemos, ya que si por cada petición que haga el usuario debemos conectarnos con el servidor que ofrece el web service, esto provocaría una gran demora para el usuario, y una sobrecarga innecesaria del servidor. Para solucionar esto podemos guardar en un archivo de texto o en una base de datos, el clima actual, para leerlo desde allí. Este archivo, o base de datos, la actualizaríamos cada un tiempo prudencial (como puede ser una hora o más).
Otros Web Services:
Actualmente existen gran cantidad de Web Services, gratuitos y no. En el sitio de XMethods pueden encontrar gran cantidad de ellos. Sin ir más lejos Google ofrece un web service para realizar búsquedas (solo hay que registrarse en http://www.google.com/apis/) y nos permitirá realizar 1000 consultas por día (creo que puede ser más que interesante para muchos).
Conclusión:
Los Web Services son un tema apasionante, ya que brindan gran funcionalidad y posibilidad de realizar cambios y mejorar nuestras aplicaciones. Un mismo web service puede ser consumido tanto por aplicaciones que se ejecutan en un servidor y entregan código html al cliente, como por aplicaciones que corren directamente en la máquina del cliente. Como vemos las posibilidades son infinitas, es sólo cuestión de comenzar a experimentar.
Apéndice:
Código de seleccionarLocalidad.php
/**
* Codigo para consumir un servicio web (Web Service) por medio de NuSoap.
* La distribucion del codigo es totalmente gratuita y no tiene ningun tipo de restriccion.
* Se agradece que mantengan la fuente del mismo.
*/ $sPais = "argentina"; // Nombre del pais que queremos el listado de localidades
// Inclusion de la libreria nusoap (la que contendra toda la conexión con el servidor // require_once('lib/nusoap.php');
$oSoapClient = new soapclient('http://live.capescience.com/wsdl/GlobalWeather.wsdl', true);
if ($sError = $oSoapClient->getError()) {
echo "No se pudo realizar la operación [" . $sError . "]";
die();
}
$aParametros = array("country" => $sPais);
$respuesta = $oSoapClient->call("searchByCountry", $aParametros);
// Existe alguna falla en el servicio? if ($oSoapClient->fault) { // Si
echo 'No se pudo completar la operación';
die();
} else { // No
$sError = $oSoapClient->getError();
// Hay algun error ?
if ($sError) { // Si
echo 'Error:' . $sError;
die();
}
}
?>
<html>
<body>
<form action="mostrarPronostico.php" method="post" name="frmLocalidades" id="frmLocalidades">
<table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2"><div align="center">Seleccione una localidad</div></td>
</tr>
<tr>
<td width="61"> </td>
<td width="339"> </td>
</tr>
<tr>
<td>Localidad:</td>
<td><select name="codLocalidad" id="codLocalidad">
$aElemento)
echo "<option value='".$aElemento["wmo"]."'>".$aElemento["name"]."</option>";
?>
</select></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
/td>
td><input type="submit" name="Submit" value="Quiero ver el pronostico"></td>
/tr>
/table>
/form>
/body>
</html>
Existen muchas formas en que podríamos usar este Web Service, podemos dejar que el visitante seleccione su país y localidad, y que nuestro sitio le retorne cual es el pronostico actual (solo deberíamos incorporar un paso anterior al que se ofrece en el código, el de selección del país).
Otro uso que podemos darle es el de mostrar cual es el clima actual para una localidad determinada (lo mismo que hacen muchos diarios en sus cabeceras). Si decidimos implementar la segunda opción debemos tener especial cuidado en como lo hacemos, ya que si por cada petición que haga el usuario debemos conectarnos con el servidor que ofrece el web service, esto provocaría una gran demora para el usuario, y una sobrecarga innecesaria del servidor. Para solucionar esto podemos guardar en un archivo de texto o en una base de datos, el clima actual, para leerlo desde allí. Este archivo, o base de datos, la actualizaríamos cada un tiempo prudencial (como puede ser una hora o más).
Otros Web Services:
Actualmente existen gran cantidad de Web Services, gratuitos y no. En el sitio de XMethods pueden encontrar gran cantidad de ellos. Sin ir más lejos Google ofrece un web service para realizar búsquedas (solo hay que registrarse en http://www.google.com/apis/) y nos permitirá realizar 1000 consultas por día (creo que puede ser más que interesante para muchos).
Conclusión:
Los Web Services son un tema apasionante, ya que brindan gran funcionalidad y posibilidad de realizar cambios y mejorar nuestras aplicaciones. Un mismo web service puede ser consumido tanto por aplicaciones que se ejecutan en un servidor y entregan código html al cliente, como por aplicaciones que corren directamente en la máquina del cliente. Como vemos las posibilidades son infinitas, es sólo cuestión de comenzar a experimentar.
Apéndice:
Código de seleccionarLocalidad.php
/**
* Codigo para consumir un servicio web (Web Service) por medio de NuSoap.
* La distribucion del codigo es totalmente gratuita y no tiene ningun tipo de restriccion.
* Se agradece que mantengan la fuente del mismo.
*/ $sPais = "argentina"; // Nombre del pais que queremos el listado de localidades
// Inclusion de la libreria nusoap (la que contendra toda la conexión con el servidor // require_once('lib/nusoap.php');
$oSoapClient = new soapclient('http://live.capescience.com/wsdl/GlobalWeather.wsdl', true);
if ($sError = $oSoapClient->getError()) {
echo "No se pudo realizar la operación [" . $sError . "]";
die();
}
$aParametros = array("country" => $sPais);
$respuesta = $oSoapClient->call("searchByCountry", $aParametros);
// Existe alguna falla en el servicio? if ($oSoapClient->fault) { // Si
echo 'No se pudo completar la operación';
die();
} else { // No
$sError = $oSoapClient->getError();
// Hay algun error ?
if ($sError) { // Si
echo 'Error:' . $sError;
die();
}
}
?>
<html>
<body>
<form action="mostrarPronostico.php" method="post" name="frmLocalidades" id="frmLocalidades">
<table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2"><div align="center">Seleccione una localidad</div></td>
</tr>
<tr>
<td width="61"> </td>
<td width="339"> </td>
</tr>
<tr>
<td>Localidad:</td>
<td><select name="codLocalidad" id="codLocalidad">
$aElemento)
echo "<option value='".$aElemento["wmo"]."'>".$aElemento["name"]."</option>";
?>
</select></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
/td>
td><input type="submit" name="Submit" value="Quiero ver el pronostico"></td>
/tr>
/table>
/form>
/body>
</html>
Orlando Fabián Brea