Entonces despues de mucho leer y rompernos la cabeza encontramos NuSOAP (el link de descarga que miran ahí esta malo, busquen en files para encontrar la verdadera libreria) para PHP. Esta librería es bastante completa. Para este ejemplo yo estoy usando XAMPP y dentro de mi carpeta "htdocs" tengo una carpeta lib que contiene todos los archivos de NuSOAP.
Ejemplo del "Servidor" de Web Service:
1<?php
//Se añaden las librerias de NuSOAP
require_once('lib/nusoap.php');
//Defino mimetodo como una funcion php
function hello($name) { return 'Hello, ' . $name;}
// Creo una nueva instancia del servidor.
$server = new soap_server; { return 'Hello, ' . $name;}
// Se registra el método a exponer, // en este caso es "hello" junto a
// su parametro en forma de array.
// el formato es algo así register(nombre,entrada,salida)$server->gt;register('hello',array('name'=>'xsd:string'),array('return'=>'xsd:string'));
//El $HTTP_RAW_POST_DATA es donde estan los datos a devolver
// por eso se verifican y se pasan a la variable $inputif(isset($HTTP_RAW_POST_DATA))
{ $input = $HTTP_RAW_POST_DATA; }
else { $input = implode("\r\n", file('php://input')); }
$server->service($input);// aquí es donde se devuelven los datos
exit;
// se termina el servicio
?>
Una breve explicación, el servidor basícamente es un archivo que contiene código php, el cual cuando un cliente quiere usar nuestro web service, le damos el link del archivo, y el "consume" el servicio. Ahora vamos al lado del cliente, este lo vamos a hacer bastante sencillo.
Ejemplo del "Cliente" de Web Service:
Además de esto no todos los grupos trabajaron con PHP, hubieron tres grupos que desarrollaron su web service en ASP.net. Para consumir estos WS desde nuestro proyecto en PHP cambia un poco la sintaxis del cliente, como veremos a continuación:
Con eso concluimos un pequeño pero conciso ejemplo de la libreria NuSOAP. Aunque esta es mucho más poderosa y con más métodos que pueden facilitarnos el trabajo con Web Service.
Ejemplo del "Cliente" de Web Service:
1 | <?php // Se añaden las librerias de NuSOAP require_once('lib/nusoap.php'); // Crea la instancia del cliente $client = new nusoap_client('http://localhost/server.php'); //Llamada al método que cree en mi servidor.php $result = $client->call('hello', array('name' => 'Scott')); // Se muestra el resultado print_r($result);?> |
1 | <?php // Se añaden las librerias de NuSOAP require_once('lib/nusoap.php'); // Crea la instancia del cliente //a la dirección donde se aloja el web service que va ser consumido se le agrega "?WSDL" (sin comillas) //Se agrega un nuevo parámetro 'wsld' (esta vez si escribimos las comitas) $client = new nusoap_client('http://localhost/WebService.asmx?WSDL', 'wsdl'); // Llamada al método que cree en mi servidor.php $result = $client->call('hello', array('name' => 'Scott')); //Puede que el web service en ASP nos devuelva un array con el contenido de lo que devuelve la función //sin embargo si lo que esperamos recibir es un simple string debemos hacer un implode //de lo contrario al usar print_r puede que nos devuelva algo similiar a: Array([posición]=>[contenido]) $result = implode(',',$result); // Se muestra el resultado print_r($result); ?> |
Con eso concluimos un pequeño pero conciso ejemplo de la libreria NuSOAP. Aunque esta es mucho más poderosa y con más métodos que pueden facilitarnos el trabajo con Web Service.
No comments:
Post a Comment