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.

Sergi Torres Martí

Sergi Torres Martí

Soy un joven emprendedor y he decidido crear este blog para darme a conocer.Mi interes es dotar de contenidos que pueda compartir y que sean de utilidad para la comunidad de programadores y aficionados a la tecnología

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, ACEPTAR

Aviso de cookies