Web Service en PHP y Cliente C#

Crear un Service Web en PHP y 
Consumir desde C#

Vamos a crear un servicio web en PHP mediante SOAP y WSDL, usando la librería nuSOAP. Básicamente un servicio web nos permite la comunicación entre un servidor que posee la parte lógica, y un cliente que la solicita, para ello nos apoyaremos en los siguientes estándares: SOAP que establece las reglas del intercambio, WSDL que describe la interfaz pública del servicio, y XML que estructura los datos que se intercambian.

Para este tutorial utilizaremos el ejemplo de la Operaciones con Fracciones

Antes de comenzar a programar, necesitamos descargar NuSOAP PHP Library de su sitio web oficial. El enlace de descarga se da a continuación. 

Requisitos adicionales
  • IDE Netbeans
  • Apache XAMPP

Service Web PHP

Ejecutamos el Apache XAMPP, para trabajar con PHP

En el directorio de XAMPP en htdocs creamos un nuevo proyecto con el nombre Servidor

Dentro de esta carpeta pegamos la carpeta que contiene la librería NUSOAP

Dentro de esta carpeta se encuentra diferentes archivos de la librería

Para facilitar la programación abriremos el proyecto con el IDENetbeans

Para comenzar a programar creamos un nuevo archivo .php,  para lo cual damos clic derecho sobre el proyecto nuevo,  y seleccionamos la opción  PHP File

El archivo que creamos tiene el nombre de servicio, hasta el momento la estructura del proyecto esta como en la imagen

Incluimos la librería nusoap dentro de nuestro archivo. lo voy a llamar «Servidor», de manera que dentro de mi archivo Servidor.php voy a colocar el siguiente código:
<?php
// incluimos la libreria ó toolkit nusoap que descargamos previamente
require 'lib/nusoap.php';
?>
?
Creamos la instancia al servidor
<?php
// Vamos a crear la instancia del servidor.
$servicio = new nusoap_server();
?>
?
Inicializamos el soporte WSDL
<?php
$nombre = "urni:nombre"; //Declaramos un nombre para el parametro
$servicio->configureWSDL('MiPrimerServicio', $nombre);
?>
?
//urni es el «Uniform Resource Name», es el nombre del recurso con que va a ser accesado el Web Service como lo comentamos es como el manual del WSDL
Registramos la estructura de datos usado por el servicio
Registramos el método/función para que el Web Service lo reconozca y se pueda utilizar:


<?php
// Parametros de entrada
$servicio->register("SumaFraccion",
array('nombre'   => array('num1' =>'xsd:integer',
'num2' =>'xsd:integer',
'num3' =>'xsd:integer',
'num4' =>'xsd:integer',),
array('return' =>'xsd:string'),$nombre

);
?>
?
Definimos el método como una función PHP
<?php
function SumaFraccion($num1,$num2,$num3,$num4) {
    $num = $num1 * $num4 + $num3 * $num2;
$den = $num2 * $num4;
//Con esto simplificamos la fracción
$mcd=gmp_gcd($num,$den);
$arriba=$num / $mcd;
$abajo=$den / $mcd;
$resultado=$arriba.'/'.$abajo;
return $resultado;
}
?>

Usamos el pedido para invocar el servicio y hasta aquí llegaría el ejemplo del lado del servidor.

<?php
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$servicio->service($HTTP_RAW_POST_DATA);
?>
Con esto ya tenemos la estructura de nuestro Servicio Web en PHP, para ver si funciona ejecutamos el programa, debe mostrarse una pagina como la siguiente con todos los métodos de nuestro servicio

Cliente C#

Para consumir el servicio con C#, debemos copiar el Link que se abrió al ejecutar nuestro servicio 

Creamos un nuevo proyecto en Visual Studio, y diseñamos el formulario de nuestra aplicación de la siguiente forma

Procedemos a realizar la referencia, para lo cual seleccionamos nuestro proyecto que se encuentra en la parte derecha con nombre ClientePHP, seguido de eso en la barra de herramientas del Visual Studio damos clic sobre la opción Proyecto, en las opciones desplegadas seleccionamos la opción Agregar referencia de servicio

En la ventana que se abrió seleccionamos la opción Abanzado

Seleccionamos la opción Agregar referencia web , y pegamos el enlace que se copio al principio

Clic en la fecha de comprobar o siguiente, generamos el WSDL y colocamos un nombre a nuestra referencia

Con esto ya podemos acceder al servicio web que se encuentra en PHP, para usarlo desde C#, con el siguiente código accedemos a todos los métodos del servicio


ServicioPHP.MiPrimerServico obj
=new ServicioPHP.MiPrimerServico();

El código terminado queda de la siguiente forma

Ejecutamos el proyecto finalizado y con esto ya tenemos finalizado la parte del Cliente en C#

?

Comentarios

Entradas populares de este blog

Introducción a la metodología RAD

Sistema Clinico con PhpMaker

Lenguaje de Programación Avanzada