Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Tutoriales > Internet > XML > Web Services: XML-RPC, SOAP, sobre PHP, Perl, y otros conceptos
-Tutoriales

Web Services: XML-RPC, SOAP, sobre PHP, Perl, y otros conceptos


SOAP sobre PHP

Ya hemos visto como funciona XML-RPC sobre PHP. El otro protocolo de Servicios Web es SOAP. SOAP también puede ser utilizado desde PHP. Aunque XML-RPC es más sencillo y más "Unix-Friendly", hay que reconocer que la mayoría de los Servicios Web públicos e interesantes de hoy en día, están definidos bajo el estándar SOAP. Es por eso, especialmente interesante saber como invocar uno de estos servicios desde SOAP.

Como hemos podido ver con XML-RPC, crear un Servicio Web es más complicado que invocarlo. En SOAP pasa lo mismo. Veamos la parte sencilla, y la más útil, o sea, su invocación.

La implementación de SOAP sobre PHP más recomendable es NuSOAP, que podemos descargar.

Está desarrollada por la empresa NuSphere y licenciada bajo LGPL.

Ponerla en marcha es tan sencillo como teclear este simple script en PHP de ejemplo:

#!/usr/local/bin/php -q 
<?php 
require_once('nusoap-0.6.1/nusoap.php'); 
$soapclient = new soapclient(
'http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl', 'wsdl');
echo $soapclient->call('getQuote',array('symbol'=>'ibm')); 
?>

Así de sencillo es obterner la cotización en bolsa de las acciones de IBM en un programa en PHP utilizando un Servicio Web SOAP. Viendo este código, nos preguntaremos qué es eso de WSDL que sale en un sitio y en otro cada vez que hablamos de SOAP. Tal como se hace en CORBA o en COM, SOAP usa un lenguaje de definición de servicios para Web (WSDL = Web Services Definition Language), en donde se definen los servicios a publicar, los tipos de datos a retornar, así como otras características de los servicios. El WSDL es un borrador (no está completamente aprobado por el W3C), aunque ya se usa en fase de explotación de forma extensiva.

Resumiendo, WSDL es equivalente a la URL en los servicios XML-RPC. Es la dirección de Internet donde hay que invocar el proceso que nos interesa.

Referencias:

Ahora un ejemplo un poco más sofisticado. Veamos cómo implementar en PHP una llamada al generador de gráficas en Flash:

#!/usr/local/bin/php -q 
<?php 
require_once('nusoap-0.6.1/nusoap.php'); 

// Definimos los parametros de entrada 
$parameters = array( 

    "mainTitle"        =>"My Bar Chart Title", 
    "subTitle"        =>"Example SubTitle",     
    "xAxisTitle"    =>"x Axis Title", 
    "yAxisTitle"    =>"y Axis Title", 
    "sourceTitle"    =>"Source: Example Output from Service",         
    "minValue"        =>"0", 
    "maxValue"        =>"100", 
    "unitType"        =>" %",     
    "drawGrid"        =>"1", 
    "animate"        =>"1", 
    "show3D"        =>"1", 
    "dataArray"       =>"Apples:78.5,Oranges:34.8,Peaches:23.7,Pears:12.9" 
); 

// Se indica la URL del servicio SOAP mediante WSDL 
$soapclient = new soapclient('http://www.flash-db.com/services/ws/flashBarChart.wsdl',
'wsdl'); 

// Se invoca al Servicio Web SOAP 
$result     = $soapclient->call('doFlashBarChart',$parameters); 

// El resultado viene en formato binario base64 ... 
$binary = base64_decode($result); 

// Grabamos el fichero flash en el filesystem 
$movieName = "./NewChart.swf"; 
$fp = fopen($movieName,"w"); 
fwrite($fp, $binary, 12000); 
fclose( $fp ); 
?> 
Los Servicios Web codifican las variables de entrada y salida mediante tags y formatos estándar

El resultado obtenido, lo podemos visualizar en un navegador usando el siguiente código HTML:

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
codebase=
"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" 
  WIDTH="500" HEIGHT="400"> 
<PARAM NAME=movie VALUE="NewChart.swf"> 
<PARAM NAME=quality VALUE=high> 
<PARAM NAME=bgcolor VALUE=#FFFFFF> 
<EMBED src="NewChart.swf" quality=high bgcolor=#FFFFFF  WIDTH="500" HEIGHT="400" 
TYPE="application/x-shockwave-flash" 
PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"> 
</EMBED> 
</OBJECT> 

Otro ejemplo más, de gran utilidad es la invocación a Google desde PHP. Google uno de los buscadores de más prestigio de la red ha incorporado recientemente la posibilidad de poder usar su base de datos de páginas desde cualquier herramienta de desarrollo.

El producto denominado "Google Web API" permite a los desarrolladores poder interrogar y tomar información de casi tres mil millones de documentos Web directamente desde Google. Para lograr eso, Google usa SOAP y WSDL de forma que los desarrolladores puedan programar en su entorno favorito tal como PHP, Java, Perl, o Visual Studio .NET.

Google Web API permite a los desarrolladores poder interrogar y tomar información de casi tres mil millones de documentos Web directamente desde Google

Veamos como se puede aprovechar la potencia de Google en nuestros scripts de PHP:

#!/usr/local/bin/php -q 
<?php 
require_once('nusoap-0.6.1/nusoap.php'); 

// Licencia de Google 
$key = 'iwnUXUtHj3bteg5FWfBJDwui3SPeB+iy'; 

// Por ejemplo ... 
$Query             = "linux+programación"; 
$startPage         = 0; 

$parameters = array(  
            'key'         => $key,  
            'q'           => $Query,  
            'start'       => $startPage,  
            'maxResults'  => 10,  
            'filter'      => false,  
            'restrict'    => '',  
            'safeSearch'  => false,  
            'lr'          => '',  
            'ie'          => '',  
            'oe'          => ''       
);     

$soapclient = new soapclient('http://api.google.com/search/beta2'); 
$result = $soapclient->call('doGoogleSearch',$parameters, 'urn:GoogleSearch'); 
print_r ($result); 
?> 

El resultado es algo así:

Array 
( 
    [documentFiltering] => false 
    [estimatedTotalResultsCount] => 77400 
    [directoryCategories] => 

    [searchTime] => 0.194757 
    [resultElements] => Array 
        ( 
            [0] => Array 
                ( 
                    [cachedSize] => 28k 
                    [hostName] => 
                    [snippet] => Programas y Aplicaciones de GNU/Linux 
                    [directoryCategory] => Array 
                        ( 
                            [specialEncoding] => 
                            [fullViewableName] => 
                        ) 

                    [relatedInformationPresent] => true 
                    [directoryTitle] => 
                    [summary] => 
                    [URL] => http://linux.bankhacker.com/software/Programacion/ 
                    [title] => Linux Programacion 
                ) 

            [1] => Array 
                ( 
                    [cachedSize] => 9k 
                    [hostName] => 
                    [snippet] =>  Hosting Linux y Programación 
                    [directoryCategory] => Array 
                        ( 
                            [specialEncoding] => 
                            [fullViewableName] => 
                        ) 

                    [relatedInformationPresent] => true 
                    [directoryTitle] => 
                    [summary] => 
                    [URL] => http://linux.bankhacker.com/ 
                    [title] => Software Linux: Programas y Aplicaciones de 
GNU/Linux 
                ) 
            ... 
        ) 

    [endIndex] => 10 
    [searchTips] => 
    [searchComments] => 
    [startIndex] => 1 
    [estimateIsExact] => false 
    [searchQuery] => linux+programación 
) 
En Perl, es también muy sencillo desarrollar un servicio XML-RPC
 
Patrocinados
 

Copyright © 1999-2010 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

diseño y desarrollo web por Color Vivo Internet. Un proyecto de los Hermanos Carrero