nu soap

3
Crear un servicio web SOAP en PHP usando la libreria NuSOAP En este ejemplo utilizaremos NuSOAP: NuSOAP es una librería para desarrollar Web Services bajo el lenguaje PHP. NuSOAP no es el único soporte (hay muchas mas librerías) pero siempre me ha dado buenos resultados y existe desde hace mucho tiempo, por lo cual está bastante avanzada. Podemos descargarla desde este enlace. Configuración Bastará con descomprimirla en nuestro directorio web e incluirla e nuestro archivo PHP: Código: ? require_once('./lib/nusoap.php'); Una vez incluida la librería, podemos inicializar/configurar el servicio. Código: ? $server = new soap_server(); $server->configureWSDL("HolaMundo", "urn:holamundowsdl"); $server->wsdl->schemaTargetNamespace = "urn:holamundowsdl"; Seguido de este código podemos definir las funciones y los tipos de datos que consumirá nuestro servicio (lo veremos después). Para finalizar, añadiremos el código para invocar el servicio. Código: ? $HTTP_RAW_POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : $server->service($HTTP_RAW_POST_DATA); Definición de funciones En este ejemplo vamos a crear 3 funciones. Código: ? function hola($nombre) { return 'Hola, ' . trim( $nombre ); } function IniciarSorteo($persona) { $Saludo = 'Hola, ' . trim( $persona['Nombre'] ) . '. '; $Saludo .= 'Usted tiene ' . $persona['Edad'] . ' '; $Saludo .= 'años y es ' . trim( $persona['Sexo'] ) . '. '; return array( 'saludo' => $Saludo, 'ganador' => (bool) rand(0, 1)

Upload: jhampiers-saint

Post on 14-Jul-2015

41 views

Category:

Services


1 download

TRANSCRIPT

Page 1: Nu soap

Crear un servicio web SOAP en PHP usando la libreria NuSOAP

En este ejemplo utilizaremos NuSOAP:

NuSOAP es una librería para desarrollar Web Services bajo el lenguaje PHP. NuSOAP no es el único soporte

(hay muchas mas librerías) pero siempre me ha dado buenos resultados y existe desde hace mucho tiempo, por lo cual está bastante avanzada. Podemos descargarla desde este enlace.

Configuración

Bastará con descomprimirla en nuestro directorio web e incluirla e nuestro archivo PHP:

Código:

?

require_once('./lib/nusoap.php');

Una vez incluida la librería, podemos inicializar/configurar el servicio.

Código:

?

$server = new soap_server(); $server->configureWSDL("HolaMundo", "urn:holamundowsdl"); $server->wsdl->schemaTargetNamespace = "urn:holamundowsdl";

Seguido de este código podemos definir las funciones y los tipos de datos que consumirá nuestro servicio (lo veremos después).

Para finalizar, añadiremos el código para invocar el servicio.

Código:

?

$HTTP_RAW_POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';

$server->service($HTTP_RAW_POST_DATA);

Definición de funciones

En este ejemplo vamos a crear 3 funciones.

Código:

?

function hola($nombre) { return 'Hola, ' . trim( $nombre ); }

function IniciarSorteo($persona) { $Saludo = 'Hola, ' . trim( $persona['Nombre'] ) . '. '; $Saludo .= 'Usted tiene ' . $persona['Edad'] . ' '; $Saludo .= 'años y es ' . trim( $persona['Sexo'] ) . '. ';

return array( 'saludo' => $Saludo, 'ganador' => (bool) rand(0, 1)

Page 2: Nu soap

); }

function GetPersonas() { $List = array();

$Sexo = array( 0 => "Hombre", 1 => "Mujer" );

for ( $i=1; $i<11; $i++ ) { $List[$i]['Nombre'] = "Persona " . $i; $List[$i]['Edad'] = rand(1, 100); $List[$i]['Sexo'] = $Sexo[rand(0, 1)]; }

return $List; }

1. La función "hola", tiene un parámetro de tipo "string" que será para pasarle un nombre y devuelve un

"saludo" que será de tipo "string". 2. La función "IniciarSorteo", tiene un parámetro de entrada de un tipo definido: "persona".

Este tipo tendrá los siguientes campos: 1. "Nombre" de tipo "string". 2. "Edad" de tipo "integer". 3. "Sexo" de tipo "string". La función devuelve también un dato de tipo definido: "ResultadoSorteo". Este tipo tendrá los siguientes campos: 4. "saludo" de tipo "string". 5. "ganador" de tipo "boolean".

3. La función "GetPersonas", no tiene parámetros de entrada y devuelve un array de tipo "Persona".

Definición de tipos en nuestro servicio web

Código:

?

$server->wsdl->addComplexType( 'TWsPersona', 'complexType', 'struct', 'all', '', array( 'Nombre' => array('name' => 'Nombre', 'type' => 'xsd:string'), 'Edad' => array('name' => 'Edad', 'type' => 'xsd:int'), 'Sexo' => array('name' => 'Sexo', 'type' => 'xsd:string') ) );

$server->wsdl->addComplexType( 'TWsArrayOfPersona', 'complexType', 'array', '',

Page 3: Nu soap

'SOAP-ENC:Array', array(), array( array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:TWsPersona[]') ), 'tns:TWsPersona' );

$server->wsdl->addComplexType( 'TWsResultadoSorteo', 'complexType', 'struct', 'all', '', array( 'saludo' => array('name' => 'saludo', 'type' => 'xsd:string'), 'ganador' => array('name' => 'ganador', 'type' => 'xsd:boolean') ) );

Definición de métodos en nuestro servicio web

Código:

?

$server->register( 'hola', // Nombre del método array('nombre' => 'xsd:string'), // Parámetros de entrada array('return' => 'xsd:string'), // Parámetros de salida 'urn:holamundowsdl', // Nombre del workspace 'urn:holamundowsdl#hola', // Acción soap 'rpc', // Estilo 'encoded', // Uso

'Saluda a la persona' // Documentación );

$server->register( 'IniciarSorteo', // Nombre del método array('Persona' => 'tns:TWsPersona'), // Parámetros de entrada array('return' => 'tns:TWsResultadoSorteo'), // Parámetros de salida 'urn:holamundowsdl', // Nombre del workspace 'urn:holamundowsdl#IniciarSorteo', // Acción soap 'rpc', // style 'encoded', // Uso

'Saludar y devuelve el resultado del sorteo' // Documentación );

$server->register( 'GetPersonas', // Nombre del método array(), // Parámetros de entrada array('return' => 'tns:TWsArrayOfPersona'), // Parámetros de salida 'urn:holamundowsdl', // Nombre del workspace 'urn:holamundowsdl#GetPersonas', // Acción soap 'rpc', // style 'encoded', // Uso

'Devuelve un array de personas' // Documentación );