en: Negocio|Programacion
Leyendo en el foro he encontrado una entrada pidiendo ayuda sobre Google Webservices, lo que se pretende es implementar el conocido “quiso decir” de Google en una aplicacion PHP, el tema es realmente interesante y por eso he decidido escribir un post que aborde este tema.
¿Has querido alguna vez enriquecer tu sitio con servicios de Google, Amazon, eBay o alguno de otros sitios a través de SOAP? En este tutorial vamos a ver como se puede usar el paquete SOAP de la PEAR para consultar a la extensa base de datos de Google, el objetivo será el uso del famoso “quiso decir” que nos ofrece opciones cuando tenemos errores de tipo tipográfico en alguna de nuestras búsquedas. Partimos de la base de que estás utilizando PHP 4 o superior y PEAR::SOAP 0.9.1, y que de igual manera estás familiarizado con PHP.
Primero de todo advertir de que el servicio de Google y PEAR::SOAP::SOAP continúan aún en estado beta, por reso tu podrías en un raro caso llegar a dar con un bug, pero no te preocupes no es lo común.
Podrías utilizar otras librerias disponibles como NuSOAP y algunos detalles de implementación seran diferentes siendo aplicable la misma teoría.
A partir de la versión 4.3.0, el paquete principal de PEAR junto con los paquetes mas comunes, se instalan automaticamente, cuando se realiza la instalación de PHP, en las versiones anteriores hay que instalarlo por separado. Esto se hace en LINUX con el comando:
$ lynx -source http://go-pear.org | php
En caso de estar utilizando Windows, habra que ir a http://go-pear.org y descargar el cógido fuente que ahí se muestra, el cual posteriormente deberemos copiar en un archivo, al que pondremos por nombre go-pear.php y luego desde la linea de comandos (DOS) lo ejecutamos. Para ambos sistema operativos la instalación es automatica. En la página oficial se puede encontrar la guia de instalación y el listado de paquetes disponibles.
Para la descarga de las extensiones necesarias hay que bajarse y descomprimir este archivo en tu servidor http://pear.php.net/get/SOAP-0.9.4.tgz.
Una vez ya tenemos instalado el módulo SOAP, el siguiente paso es descargar el developer’s kit de Google Web API para obtener nuestra clave de uso. Esta clave te permite realizar mil consultas al dia gratis.Visita Google Web APIs (http://www.google.es/apis/) y sigue las instrucciones.
Descomprime el archivo obtenido y ponlo en un lugar adecuado de tu cuenta FTP. Este contiene ejemplo de accesos al servicio con la plataforma .NET y Java, pero la mayoría de la documentación es la que utiliza estos servicios de Google mediante scripts PHP.
En el directorio del developer’s kit encontrarás un archivo llamado GoogleSearch.wsdl, que puedes abrir con cualquier editor de texto o navegador que soporte XML. Este archivo define exactamente que servicios podemos utilizar por medio de SOAP.
Sin embargo tambien podemos ver esta información con este pequeño trozo de código PHP.
<?php
require_once ‘SOAP/Client.php’;
$wsdl = new SOAP_WSDL(‘GoogleSearch.wsdl’);
header(‘Content-Type: text/plain’);
echo $wsdl->generateProxyCode();?>
Situa este archivo editado y con extensión .php en algún lugar del servidor con acceso a GoogleSearch.wsdl. Si todo a ido bien podrás ver la salida del archivo, el resultado parsea el WSDL y lo convierte en funciones PHP.
Este es el resultado si todo ha funcionado:
class WebService_GoogleSearchService_GoogleSearchPort extends SOAP_Client
{
function WebService_GoogleSearchService_GoogleSearchPort($path = ‘http://api.google.com/search/beta2′)
{
$this->SOAP_Client($path, 0);
}
function &doGetCachedPage($key, $url)
{
$result = $this->call(‘doGetCachedPage’,
$v = array(‘key’ => $key, ‘url’ => $url),
array(‘namespace’ => ‘urn:GoogleSearch’,
‘soapaction’ => ‘urn:GoogleSearchAction’,
‘style’ => ‘rpc’,
‘use’ => ‘encoded’));
return $result;
}
function &doSpellingSuggestion($key, $phrase)
{
$result = $this->call(‘doSpellingSuggestion’,
$v = array(‘key’ => $key, ‘phrase’ => $phrase),
array(‘namespace’ => ‘urn:GoogleSearch’,
‘soapaction’ => ‘urn:GoogleSearchAction’,
‘style’ => ‘rpc’,
‘use’ => ‘encoded’));
return $result;
}
function &doGoogleSearch($key, $q, $start, $maxResults, $filter, $restrict, $safeSearch, $lr, $ie, $oe)
{
$result = $this->call(‘doGoogleSearch’,
$v = array(‘key’ => $key, ‘q’ => $q, ‘start’ => $start, ‘maxResults’ => $maxResults, ‘filter’ => $filter, ‘restrict’ => $restrict, ‘safeSearch’ => $safeSearch, ‘lr’ => $lr, ‘ie’ => $ie, ‘oe’ => $oe),
array(‘namespace’ => ‘urn:GoogleSearch’,
‘soapaction’ => ‘urn:GoogleSearchAction’,
‘style’ => ‘rpc’,
‘use’ => ‘encoded’));
return $result;
}
}
Recapitulemos los pasos por si os da algún tipo de error, en primer lugar asegurate de que la versión de PHP es la correcta 4.3.0 o superior, si no es así instalaló cómo explicabamos anteriormente, ahora descarga el paquete de extensiones disponible en http://pear.php.net/get/SOAP-0.9.4.tgz, descomprime el zip y colocalo en una carpeta de tu server por ejemplo “pruebas/SOAP”, ahora descarga el developers kit de Google, busca el archivo GoogleSearch.wsdl y subeló a “pruebas”, con tu editor Web crea un archivo con el código citado en el punto anterior y colocalo tambien dentro del directorio “pruebas”, si aún sigue sin funcionar comprueba las rutas relativas y en caso necesarios conviertelas en rutas absolutas.
Por poco que hayas usado Google habrás visto alguna vez el famoso “quiso decir ‘xxx’”, esta línea aparece cuando Google interpreta que has tenido un error de tipo tipográfico.
Gracias a este servicio de Google podemos añadir esta opción a nuestras aplicaciones PHP, el código necesario es el siguiente.
<?php
require_once ‘SOAP/Client.php’;
$key = ‘Introduce tu clave de uso de la API aquí’;
$wsdl = new SOAP_WSDL(‘GoogleSearch.wsdl’);
$googleProxy = $wsdl->getProxy();
echo $googleProxy->doSpellingSuggestion($key, ‘porgramacion’);
?>
Cómo puedes obserar en la cadena pasada hay un error de tipo tipográfico “porgramacion” aqui puedes ver el resultado de este pequeño script.
¿Muy simple verdad?, la prímera línea de código es trivial y las siguientes son lo suficientemente descriptivas cómo para animarnos a seguir “jugando” con este servicio, hay que tener en cuenta de que se permite 1000 consultas por día/clave, realmente interesante este servicio y altamente recomendado su uso aunque unicamente sea por curiosidad.
Puedes observar las características más avanzadas de este servicio en páginas de Google como esta: http://www.google.com/webhp?complete=1&hl=en.
Cómo hemos podido ver es fácil el uso de este servicio de Google y de igual manera podríamos utilizar cualquiera de los citados anteriormente en la ejecucion del parser de GoogleSearch.wsdl:
&doGoogleSearch
&doSpellingSuggestion
&doGetCachedPage
http://devzone.zend.com/node/view/id/689#Heading3 – Php SOAP extension (devzone.zend.com)
http://www.google.com/apis/reference.html – Google SOAP Search API Reference
http://wiki.cc/php/Soap_client – Php-Wiki (Soap)
http://www.phphacks.com/content/view/27/33/ – Google Webservices with PHP
http://pear.php.net/get/SOAP-0.9.4.tgz – Descarga de extensiones SOAP
http://pear.php.net/ – PEAR (Php)
http://www.google.es/apis/ – Descarga del developer’s kit