May 09

resin_logoEs posible ejecutar un servicio creado en PHP con NuSOAP en el servidor de aplicaciones escrito en Java Resin, esto permite crear webservices que pueden ser alojados en servidores como Apache2 con soporte para PHP, como tambien servidores Java como el GlassFish.

Para que los webservices funcionen es necesario instalar una version igual o superior a la 3.2.1 la cual instalamos en el anterior post (enlace), como tambien realizar un pequeño cambio en el sel codigo (enlace) Servidor donde se reemplaza la lectura de datos via RAW por una lectura de la entrada de datos php://input, quedando de la siguiente forma el archivo servicio.php

 
<?php
	require_once('nusoap.php');
	require_once('sumar.php');
 
	$server = new nusoap_server();
	$server->register('sumar');
 
	$HTTP_RAW_POST_DATA = file_get_contents("php://input");
	$server->service($HTTP_RAW_POST_DATA);
?>
 

De esta forma es posible ejecutar el servicio web encualquier plataforma o servidor que soporte Java.

Enlaces :

UA:A [1.3.0_631]
Tagged with:



En May 9 de 2009, Marlon J. Manrique escribió acerca de WebService con NuSOAP en Servidor Resin.
May 09

phpAunque en PHP5 existe una extension para crear servicios web basados en SOAP, algunos servidores donde posiblemente alojemos nuestra aplicacion no tienen habilitada la extension y por tal motivo debemos buscar alternativas para la creacion de los webservices.

En el 2002 Dietrich Ayala escribio una libreria llamada NuSOAP que permite implementar webservices en PHP incluyendo la version 4 y 5, esta libreria es una de las mas populares en la costruccion de servicios web en PHP pues tiene soporte para diferentes versiones de SOAP, como tambien es posible crear servicios web que generen los descriptores de los webservices (WSDL) y soporte de tipos de datos, aunque la implementacion suele complicarse cuando se utilizan estas caracteristicas.

Implementaremos un webservice basado en una funcion llamada sumar de la cual crearemos el webservice y su cliente utilizando NuSOAP, a continuacion se describen los pasos :

  • Abrir una terminal
  • Ir al directorio web donde se creara el servicio
  • Descargar la libreria NuSOAP del repositorio en SourceForge
    http://nusoap.cvs.sourceforge.net/viewvc/nusoap/lib/
  • En este caso descargaremos la version 1.121
    wget http://nusoap.cvs.sourceforge.net/viewvc/*checkout*/nusoap/lib/nusoap.php?revision=1.121

Implementar la Funcion a Utilizar :

  • Utilizando su editor favorito crear un archivo donde se implemente la funcion :
    (utilizaremos una funcion sumar que recibe dos numero y retorna su suma)
  • Crear el archivo sumar.php
 
<?php
        function sumar($x, $y)
        {
                return $x + $y;
        }
?>
 

Implementar el Servicio Web :

  • Utilizando su editor favorito crear un archivo donde se cree el servidor
  • Crear el archivo servicio.php
  • Este incluye la libreria NuSOAP y la funcion creada anteriormente
  • Crea un servidor soap e incluye la funcion
  • Despacha el servicio con la informacion suministrada
 
<?php
        require_once('nusoap.php');
        require_once('sumar.php');
 
        $server = new nusoap_server();
        $server->register('sumar');
 
        $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
        $server->service($HTTP_RAW_POST_DATA);
?>
 
  • Abrir la pagina PHP en su navegador favorito, debe salir en blanco sin reportar errores
    http://<servidor>/<ruta>/servicio.php

Implementar el Cliente :

  • En este caso implementaremos un cliente en el lenguaje PHP para consumir el servicio.
  • Utilizando su editor favorito crear un archivo cliente.php
  • Para realizar el llamado se debe especificar como argumentos el nombre de la fuinciony en un arreglo asociativo, los nombres de las variables con sus respectivos valores
 
<?php
        require_once('nusoap.php');
        $cliente = new nusoap_client('http://<ipServidor>/<ruta>/servicio.php');
        $resultado = $cliente->call('sumar', array('x' => '3', 'y' => 4));
        print_r($resultado);
?>
 
  • Abrir la pagina PHP del cliente en su navegador favorito, debe salir en blanco sin reportar errores
    http://<servidor>/<ruta>/cliente.php

Enlaces :

Tagged with:



En May 9 de 2009, Marlon J. Manrique escribió acerca de WebService en PHP con NuSOAP.
May 09

phpComo siempre no existe dicha completa, hace poco escribi como escribir webservices utilizando PHP, pero desafortunadamente esta extension no esta instalada en todos los servidores, por lo cual se debe buscar una alternativa como NuSOAP de la cual estare escribiendo pronto en el blog.

Para determinar si su servidor tiene la extension soap necesaria para implementar los webservices en PHP, verifique la informacion generada por la funcion phpinfo(), esto se puede hacer de una forma rapida de la siguiente manera :

  • Abrir una terminal
  • Ir a un directorio web
  • Crear el archivo phpinfo.php
  • Escribir el siguiente codigo :
 
<?php
      phpinfo();
?>
 
  • Abrir un navegador

phpinfo_soap

  • Cargar la pagina
    http://<ipServidor>/<ruta>/phpinfo.php
  • Esto visualiza una gran cantidad de informacion sobre la configuracion y version del PHP
  • Busque soap y verifique que Soap Client y Soap Server esta habilitado

Enlaces :

Tagged with:



En May 9 de 2009, Marlon J. Manrique escribió acerca de Verificar Soporte para Soap en PHP.
May 08

phpEn la version 5 de PHP se incorporan las clases necesarias para la creacion de webservices y su invocacion desde clientes remotos, a continuacion se ilustra como crear un webservice en PHP que ejecute un metodo dentro de una clase definida por el usuario en el servidor.

Implementar la Clase a Utilizar :

  • Ir al directorio web donde se quiere crear el servicio
  • Utilizando su editor favorito crear un archivo donde se implemente la clase y sus metodos :
    (utilizaremos una clase Calculadora con el metodo sumar que recibe dos numero y retorna su suma)
  • Crear el archivo Calculadora.php
 
<?php
        // Clase que implementa los servicios
        class Calculadora
        {
                // Metodo a utilizar como servicio
                public function sumar($x, $y)
                {
                        return $x + $y;
                }
        }
?>
 

Implementar el Servicio Web :

  • Utilizando su editor favorito crear un archivo donde se cree el servidor
  • Crear el archivo servicio.php
  • Incluir la clase Calculadora a utilizar dentro del webservice
  • No se utilizara WSDL ya que toca generarlo a mano para el servicio
  • Al no utilizar WSDL se debe suministrar el namespace, en este caso uri:webservices
  • Al momento de asignar la clase al webservice se debe suministrar el nombre.
 
<?php
        // Incluir la Clase
        require_once('Calculadora.php');
 
        // Crear servidor de Soap
        $server = new SoapServer(
                null, // No utilizar WSDL
                array('uri' => 'urn:webservices') // Se debe especificar el URI
        );
 
        // Asignar la Clase
        $server->setClass('Calculadora');
 
        // Atender los llamados al webservice
        $server->handle();
?>
 
  • Abrir la pagina PHP en su navegador favorito, debe salir en blanco sin reportar errores
    http://<servidor>/<ruta>/servicio.php

Implementar el Cliente :

  • En este caso implementaremos un cliente en el lenguaje PHP para consumir el servicio.
  • Utilizando su editor favorito crear un archivo cliente.php
 
<?php
        // Crear el cliente suministrado la ruta del servicio
        // Utilizar el uri
        $client = new SoapClient(null,
                array(
                        'location' => 'http://localhost/~marlonj/servicio.php',
                        'uri' => 'urn:webservices',
                ));
 
        // Llamar el metodo como si fuera del cliente
        echo $client->sumar(3,4);
?>
 
  • Abrir la pagina PHP del cliente en su navegador favorito, debe salir en blanco sin reportar errores
    http://<servidor>/<ruta>/cliente.php

De esta forma podemos crear una clase que contenga los metodos a ser utilizados como webservices, de esta forma el servidor crea una instancia de la clase Calculadora cada vez que se invoca un servicio.

Tambien es posible asignar un objeto al servicio para esto podemos crear una instancia del objeto a utilizar como servicio web y enlazarlo con el webservice, asi :

 
<?php
        // Incluir la Clase
        require_once('Calculadora.php');
 
        // Crear servidor de Soap
        $server = new SoapServer(
                null, // No utilizar WSDL
                array('uri' => 'urn:webservices') // Se debe especificar el URI
        );
 
        // Crear el objeto a utilizar como webservice
        $calculadora = new Calculadora();
 
        // Asignar el Objeto
        $server->setObject($calculadora);
 
        // Atender los llamados al webservice
        $server->handle();
?>
 

Enlaces :

Tagged with:



En May 8 de 2009, Marlon J. Manrique escribió acerca de Creando WebService en PHP5 con una Clase.
May 07

phpUna de las tantas formas de crear aplicaciones orientadas a servicios es el uso de los webservices que permiten realizar llamados a funciones que se encuentrar en un servidor desde otras maquinas de forma remota, permitiendo un desarrollo independiente de la plataforma, utilizando tecnologias abiertas.

La version 4 de PHP no incluye soporte directo para la implementacion de webservices, por tal motivo eran necesarias librerias con NuSOAP que implementaban los diferentes componentes para la creacion de webservices a si como su consumo, aun hoy se sigue utilizando esta libreria gracias a que soporta la generacion del descriptor del webservice de forma automatica.

En la version 5 de PHP se incorporan las clases necesarias para la creacion de webservices y su invocacion desde clientes remotos, a continuacion se ilustra como crear un webservice en PHP que ejecute una funcion definida por el usuario en el servidor.

Implementar la Funcion a Utilizar :

  • Ir al directorio web donde se quiere crear el servicio
  • Utilizando su editor favorito crear un archivo donde se implemente la funcion :
    (utilizaremos una funcion suma que recibe dos numero y retorna su suma)
  • Crear el archivo sumar.php
 
<php
        function sumar($x, $y)
        {
                return $x + $y;
        }
>

Implementar el Servicio Web :

  • Utilizando su editor favorito crear un archivo donde se cree el servidor
  • Crear el archivo servicio.php
  • Incluir la funcion suma a utilizar dentro del webservice
  • No se utilizara WSDL ya que toca generarlo a mano para el servicio
  • Al no utilizar WSDL se debe suministrar el namespace, en este caso uri:webservices
  • Al momento de adicionar las funciones al webservice se puede especificar el nombre de la funcion, un arreglo con los nombres de las funciones a adicionar al servicio.
 
<php
        // Incluir la funcion
        require_once('sumar.php');
 
        // Crear servidor de Soap
        $server = new SoapServer(
                null, // No utilizar WSDL
                array('uri' => 'urn:webservices') // Se debe especificar el URI
        );
 
        // Adicionar las funciones
        $server->addFunction(
                array('sumar')
        );
 
        // Atender los llamados al webservice
        $server->handle();
?>
  • Abrir la pagina PHP en su navegador favorito, debe salir en blanco sin reportar errores
    http://<servidor>/<ruta>/servicio.php

Implementar el Cliente :

  • En este caso implementaremos un cliente en el lenguaje PHP para consumir el servicio.
  • Utilizando su editor favorito crear un archivo cliente.php
 
<php
        // Crear el cliente suministrado la ruta del servicio
        // Utilizar el uri
        $client = new SoapClient(null,
                array(
                        'location' =>; 'http://<servidor>/<ruta>/servicio.php',
                        'uri' =>; 'urn:webservices',
                ));
 
        // Llamar la funcion como si fuenra un metodo del cliente
        echo $client->sumar(3,4);
?>
  • Abrir la pagina PHP del cliente en su navegador favorito, debe salir en blanco sin reportar errores
    http://<servidor>/<ruta>/cliente.php

Con esto ya tenemos un servicio web en PHP que puede ser llamado remotamente desde otro servidor que implemente el cliente o cualquier otro lenguaje que permita implementar clientes de webservices.

Enlaces :

Tagged with:



En May 7 de 2009, Marlon J. Manrique escribió acerca de Creando WebService en PHP5 desde una Funcion.
May 02

resin_logoInstalaremos a continuacion Resin, el servidor de aplicaciones Java y PHP de la empresa Caucho Technology sobre el sistema operativo Ubuntu 9.04 con el fin de probar la ejecucion del scriptHola Mundo en PHP.

Ejecutar Servidor :

  • Abrir una terminal
  • Instalar Java
    sudo apt-get install sun-java6-jdk
  • Descargar una version de Resin
    http://caucho.com/download
  • En este caso descargaremos la version estable 3.1.9 en version GPL
    wget http://caucho.com/download/resin-3.1.9.zip
  • Descomprimimos el archivo
    unzip resin-3.1.9
  • Cambiamos de directorio
    cd resin-3.1.9
  • Ejecutamos el servidor
    java -jar lib/resin.jar start
  • Abrimo el navegador y cargamos la pagina :
    http://localhost:8080
  • Debe mostrar la pagina por defecto del servidor con enlaces para la administración y documentación
    Si no es asi, verifique que no exista ningun servicio ejecutandose en el puerto 8080, como por ejemplo un servidor Tomcat

Crear Script en PHP :

  • Creamos el directorio donde se alojara la el script PHP
    mkdir webapps/hola_php
  • Vamos al directorio
    cd webapps/hola_php
  • Creamos el archivo index.php con el siguiente contenido
    <?php echo "Hola Mundo" ?>
  • Cargamos en el navegador la siguiente direccion :
    http://localhost:8080/hola_php
  • Debe mostrarnos una pagina con el texto : Hola Mundo

Detener el Servidor :

  • Ir al directorio raiz del Resin y ejecutar el comando :
    java -jar lib/resin.jar stop

Aunque no es una prueba completa del funcionamiento del soporte del lenguaje PHP en Resin, es el primer paso para comenzar a realizar mas pruebas con scripts mas complejos, frameworks y aplicaciones.

Enlaces :

UA:A [1.2.3_620]
Tagged with:



En May 2 de 2009, Marlon J. Manrique escribió acerca de Pruebas con Resin en Ubuntu 9.04.