SlideShare una empresa de Scribd logo
1 de 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)
);
}
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',
'',
'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
);

Más contenido relacionado

La actualidad más candente

La actualidad más candente (15)

Unidad 3: Herencia Ejercicio 2
Unidad 3: Herencia Ejercicio 2Unidad 3: Herencia Ejercicio 2
Unidad 3: Herencia Ejercicio 2
 
Jimenez Plascencia Tarea Sesion 3
Jimenez Plascencia Tarea Sesion 3Jimenez Plascencia Tarea Sesion 3
Jimenez Plascencia Tarea Sesion 3
 
Programación de códigos en PHP
Programación de códigos en PHPProgramación de códigos en PHP
Programación de códigos en PHP
 
Practica web de la sesión 3
Practica web de la sesión 3Practica web de la sesión 3
Practica web de la sesión 3
 
Programación de codigos de php
Programación de codigos de phpProgramación de codigos de php
Programación de codigos de php
 
Clic de banners
Clic de bannersClic de banners
Clic de banners
 
Php
PhpPhp
Php
 
As3 unidad 13 imprimir y enviar mails desde flash
As3 unidad 13 imprimir y enviar mails desde flashAs3 unidad 13 imprimir y enviar mails desde flash
As3 unidad 13 imprimir y enviar mails desde flash
 
Oseh
OsehOseh
Oseh
 
Ad script de usuarios masivos en windows server 2012
Ad script  de usuarios  masivos en windows server 2012Ad script  de usuarios  masivos en windows server 2012
Ad script de usuarios masivos en windows server 2012
 
Practicawebsesion3
Practicawebsesion3Practicawebsesion3
Practicawebsesion3
 
Operaciones básicas con dos variables en php
Operaciones básicas con dos variables en phpOperaciones básicas con dos variables en php
Operaciones básicas con dos variables en php
 
Generación de certifcados con OpenSSL para Servidor
Generación de certifcados con OpenSSL para ServidorGeneración de certifcados con OpenSSL para Servidor
Generación de certifcados con OpenSSL para Servidor
 
dajaxproject.com
dajaxproject.comdajaxproject.com
dajaxproject.com
 
Php
PhpPhp
Php
 

Destacado

Ejercicio - Personal de departamentos (XSD - XML Schema)
Ejercicio - Personal de departamentos (XSD - XML Schema)Ejercicio - Personal de departamentos (XSD - XML Schema)
Ejercicio - Personal de departamentos (XSD - XML Schema)Abrirllave
 
Diario Oficial de la Federación Anexo20 Resolución Miscelánea Fiscal 2014
Diario Oficial de la Federación Anexo20 Resolución Miscelánea Fiscal 2014Diario Oficial de la Federación Anexo20 Resolución Miscelánea Fiscal 2014
Diario Oficial de la Federación Anexo20 Resolución Miscelánea Fiscal 2014ahtreb57
 
Pyxser, Serialización XML en Python (paper)
Pyxser, Serialización XML en Python (paper)Pyxser, Serialización XML en Python (paper)
Pyxser, Serialización XML en Python (paper)damowe
 
Contenidos detallados del tutorial de LMSGI
Contenidos detallados del tutorial de LMSGIContenidos detallados del tutorial de LMSGI
Contenidos detallados del tutorial de LMSGIAbrirllave
 

Destacado (10)

Ejercicio - Personal de departamentos (XSD - XML Schema)
Ejercicio - Personal de departamentos (XSD - XML Schema)Ejercicio - Personal de departamentos (XSD - XML Schema)
Ejercicio - Personal de departamentos (XSD - XML Schema)
 
Almdedat
AlmdedatAlmdedat
Almdedat
 
Diario Oficial de la Federación Anexo20 Resolución Miscelánea Fiscal 2014
Diario Oficial de la Federación Anexo20 Resolución Miscelánea Fiscal 2014Diario Oficial de la Federación Anexo20 Resolución Miscelánea Fiscal 2014
Diario Oficial de la Federación Anexo20 Resolución Miscelánea Fiscal 2014
 
Wsdl concepto
Wsdl conceptoWsdl concepto
Wsdl concepto
 
Rdf
RdfRdf
Rdf
 
Web3y4
Web3y4Web3y4
Web3y4
 
Pyxser, Serialización XML en Python (paper)
Pyxser, Serialización XML en Python (paper)Pyxser, Serialización XML en Python (paper)
Pyxser, Serialización XML en Python (paper)
 
Introducción a XML Schema
Introducción a XML SchemaIntroducción a XML Schema
Introducción a XML Schema
 
Chuleta de DTD
Chuleta de DTDChuleta de DTD
Chuleta de DTD
 
Contenidos detallados del tutorial de LMSGI
Contenidos detallados del tutorial de LMSGIContenidos detallados del tutorial de LMSGI
Contenidos detallados del tutorial de LMSGI
 

Similar a Nu soap

Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, javaFaby Marcos Solis
 
Servicios web java php-perl-google
Servicios web java php-perl-googleServicios web java php-perl-google
Servicios web java php-perl-googleJosue Hernandez
 
Servicios web
Servicios webServicios web
Servicios webitoomac02
 
Servicios web
Servicios webServicios web
Servicios webitoomac02
 
Servicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y GoogleServicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y GoogleArmando Nuñez Ramos
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera apiCloudAppi
 
Servicio web java php perl google
Servicio web  java php perl googleServicio web  java php perl google
Servicio web java php perl googleSeveredDRA
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apisCloudAppi
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desdejbersosa
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APICloudAppi
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.comoctabio
 

Similar a Nu soap (20)

Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, java
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web java php-perl-google
Servicios web java php-perl-googleServicios web java php-perl-google
Servicios web java php-perl-google
 
Servicios web Extendido_error perl
Servicios web Extendido_error perlServicios web Extendido_error perl
Servicios web Extendido_error perl
 
Lab-03-PD2-SOAP
Lab-03-PD2-SOAPLab-03-PD2-SOAP
Lab-03-PD2-SOAP
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y GoogleServicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y Google
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera api
 
Seguridades asp.Net
Seguridades asp.NetSeguridades asp.Net
Seguridades asp.Net
 
Servicio web java php perl google
Servicio web  java php perl googleServicio web  java php perl google
Servicio web java php perl google
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
 
Servicios web
Servicios webServicios web
Servicios web
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desde
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera API
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.com
 

Nu soap

  • 1. 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)
  • 2. ); } 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', '',
  • 3. '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 );