Conectarse a un Web Service en PHP con WPF

Este caso de estudio, que vamos a ver a lo largo de esta entrada, nos minimiza costos, al menos en la parte de que nuestros servidores pueden estar sobre plataforma Linux, inclusive si vamos a crear una aplicación open source podemos usar hosting gratuitos que existen en grandes cantidades.




Además hay que tomar en cuenta el hecho de que no existen muchos hosting de Bases de Datos (por no decir ninguno) que permitan conexiones remotas, lo cual se nos presenta como un problema un poco difícil de salvar, a menos claro de que usemos Web Services.
Crear el Web Service en PHP
Para crear un Web service en PHP deberemos de usar la librería de clases NuSOAP, que la podemos descargarla de aquí.
NuSoap es un conjunto de clases escritas en PHP, que facilitan la creación y el consumo de Web Services SOAP,  esta librería se caracteriza por si sencillez al momento de implementarla, lo cual genera menos tiempo de Desarrollo para nuestros proyectos.
Para nuestra aplicación de prueba crearemos un Web Servicie que nos ofrezca un método llamado Operation, que devuelva la suma de dos dígitos, enviados a través de los parámetros del método. El código en PHP debería ser el siguiente:

//Se agrega la libreria nusoap.php, que debe de existir en el mismo
//directorio donde se encuntre este archivo
require_once('nusoap.php');
// Se crea una instancia del Servidor SOAP
$server = new soap_server;
// Inicializamos el soporte para WSDL
$server->configureWSDL('hellowsdl', 'urn:hellowsdl');
// Registramos en el servidor el metodo que deseamos exponer
$server->register(
    'operation',                            // Nmbre del Metodo
    array('firstNumber' => 'xsd:string', 'secondNumber' => 'xsd:string'),      // Parametros de Entrada
    array('return' => 'xsd:string'),    // Parametros de Salida
    'uri:Space',                   // namespace
    'uri:Space/operation',         // Accion SOAP
    'rpc',                              // estilo
    'encoded'                           // uso
);

// Define the method as a PHP function
//function operation($firstNumber, $secondNumber) {
function operation($firstNumber, $secondNumber) {
    return ($firstNumber + $secondNumber);
}
// Usamos esta peticion para invokar el servicio
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>

Si entramos a nuestro navegador y ponemos la ruta del archivo seguido del parámetro ?wsdl, obtendremos lo siguiente:




El siguiente paso, es crear una aplicación en WPF, que llame al servicio web, la aplicación luce así:


Para llamar al servicio web, hay que agregar una referencia web:




Y en el cuadro de dialogo que se despliega, hay que ir a la opción Advance:



En el nuevo cuadro de dialogo que se despliega existe la opción de compatibilidad, que se nos ofrece a través de un botón llamado “Add Web Reference”:



Se nos desplegara un nuevo cuadro de dialogo, donde deberemos de agregar la URL de nuestro servicio web:



El último paso sería crear un evento asociado, al botón calculate que haga la llamada al web service y que asigne al text box el resultado de la operación, el código sería algo así:

using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace TestNuSOAP
{
///
///InteractionlogicforMainWindow.xaml
///
public partial classMainWindow:Window
{
private localhost.hellowsdlclient;
public MainWindow()
{
       InitializeComponent();
       client=newlocalhost.hellowsdl();
}

private void btnOperation_Click(objectsender,RoutedEventArgse)
{
       if(txtNumberOne.Text!=string.Empty&&txtNumberTwo.Text!=string.Empty)
             txtResult.Text=client.operation(txtNumberOne.Text,txtNumberTwo.Text);
}
}
}

Y listo, ahora podemos sumar 2 números en un web service!!:



Bastante fácil consumir un servicio PHP en WPF, con lo cual me despido.




Comentarios

Entradas populares de este blog

Ejecutar comandos en el CMD de Windows desde C#

Usar Log4Net en un proyecto ASP.NET MVC