Como crear un webservice con php y soap UI

En este post vamos a ver como crear un webservice con php y soap UI y para ello vamos a ver que es un webservice.

Antes de empezar recomiendo descargar:

¿Que es?

Un webservice es una vía de comunicación entre diferentes maquinas conectadas en red.
Y está basado en un sistema de solicitudes y respuestas entre el cliente y el servidor.
Actualmente hay dos sistemas de comunicación SOAP y REST:
SOAP (Simple Object Access Protocol): Este sistema utiliza XML como lenguaje de intercanvio de datos entre cliente y servidor.

REST (Transferencia de Estado Representacional): Usa el Protocolo HTTP para la comunicación entre maquinas, y es soportado por todos los sistemas. Y actualmente es el sistema mas utilizado debido a su sencillez. Y utiliza el Lenguaje JSON.

Como crear un webservice con php y soap UI

Vamos a ello. «Let’s go!»

Para crear nuestro cliente y servidor, nos descargaremos el NuSOAP Toolkit, que nos ofrece diferentes clases i funciones que utilizaremos para crear nuestro Webservice basado en SOAP.
Una vez descargado el toolkit añadiremos la carpeta lib a nuestro Proyecto y crearemos un archivo PHP para cliente y otro para servidor.

Una vez creado el archivo server.php vamos a preparar el código que generara el XML del Servidor. El servidor que vamos a crear es muy sencillo, haremos un servidor con una función que devuelva el “buenas” y el texto que enviemos por webservice a través de nuestro cliente.

<?php

require_once «lib/nusoap.php»;

function Test($respuesta) {

return «Buenas «. $respuesta;

}

$server = new soap_server();

$server->soap_defencoding = ‘utf-8’;

$server->decode_utf8 = false;

$server->configureWSDL(«WStest», «urn:WStest»);

$server->register(«Test»,

array(«pregunta» => «xsd:string»),

array(«return» => «xsd:string»),

«urn:WStest»,

«urn:WStest#getProd»,

«rpc»,

«encoded»,

«Enviar mail de aviso»);

if ( !isset( $HTTP_RAW_POST_DATA ) ) $HTTP_RAW_POST_DATA =file_get_contents( ‘php://input’ );

$server->service($HTTP_RAW_POST_DATA);

?>

La etiqueta “$server->register” nos permite registrar las funciones en el webservice, ya que sin esto las funciones no aparecen a pesar de que existan y por lo tanto no podrían ser utilizadas.

El primer array:  array («pregunta» => «xsd:string»)

Agregara las variables que el servidor tiene que recibir, en este caso solo 1 y del tipo “string”, pero si queremos tener varias, solo tenemos que separarlas por “,”. Por ejemplo:

array («texto1» => «xsd:string»,»texto2″ => «xsd:string»,»numero» => «xsd:int»)

El segundo array es para definir las variables a devolver.

Con esto ya tenemos nuestro servidor, y ahora prepararemos un cliente simple para acabar con nuestro ejemplo webservice. Este es nuestro cliente.php que consta de un formulario simple con un único campo que enviaremos a esta misma pagina.

<?php

require_once (‘lib/nusoap.php’);

$client = new nusoap_client(‘http://localhost/wdl2/server.php?wsdl’,true);

if(isset($_POST[‘name’])){

$res=$client->call(«Test»,array($_POST[‘name’]));

echo $res . «<br />» ;

}

?>

<form method=»post»

action=»<?php echo basename(__FILE__); ?>»>

<input name=’name’>

<input type=»submit» value=»enviar» name=’submit’/>

</form>

De esta pagina básicamente la parte que nos interesa es la variable $client, que básicamente definimos como una nuevo cliente soap del servidor que hemos creado. Y una vez creada la variable, la llamada a la función “Test” que tenemos en el servidor, a la cual le pasamos la variable del formulario:

$res=$client->call(«Test»,array($_POST[‘name’]));

Y como nos interesa saber la respuesta del servidor, o bien la guardamos en una variable como $res o bien podríamos imprimirla directamente.

Con esto finalizamos la creación de nuestro WebService y nuestra prueba con un cliente.

Deja un comentario