Ejemplo de como enviar arreglo Multidimensional Para NuSOAP

Hola Colegas!

Gracias a la consulta de una de mis visitantes, les comparto el ejemplo de como enviar un vector ó arreglo multidimensional con nusoap y que nuestro servicio (webService) lo pueda procesar, es muy similar al ejemplo que compartí anteriormente, únicamente con pequeñas variaciones.

Le vamos a enviar lo siguiente ( arreglo multidimensional):

	
$personas = array();
$personas[1] =  array('cedula' => '123A', 'nombre' => 'Juan',	'FechaNacimiento'	=> 1965);
$personas[2] =  array('cedula' => '123B', 'nombre' => 'Marcos',	'FechaNacimiento' 	=> 1980);
$personas[3] =  array('cedula' => '123C', 'nombre' => 'Pedro',	'FechaNacimiento' 	=> 1990);
$personas[4] =  array('cedula' => '123D', 'nombre' => 'Ana',	'FechaNacimiento'	=> 1995);
$personas[5] =  array('cedula' => '123F', 'nombre' => 'Maria',	'FechaNacimiento'	=> 1972);


Del lado del server nuestro código seria el siguiente:

<?php

// incluimos la libreria ó toolkit nusoap que descargamos previamente
require_once('lib/nusoap.php');

$server = new nusoap_server();

$server->configureWSDL('Mi Web Service', 'urn:mi_ws1');

// Parametros de entrada
$server->wsdl->addComplexType(  'datos_persona_entrada', 
                                'complexType', 
                                'struct', 
                                'all', 
                                '',
                                array('cedula'  		 	=> array('name' => 'cedula','type' => 'xsd:string'),
                                      'nombre'    			=> array('name' => 'nombre','type' => 'xsd:string'),
                                      'FechaNacimiento' 	=> array('name' => 'FechaNacimiento','type' => 'xsd:string'))
);
// Parametros de Salida
$server->wsdl->addComplexType(  'datos_persona_salida', 
                                'complexType', 
                                'struct', 
                                'all', 
                                '',
                                array('mensaje'   => array('name' => 'mensaje','type' => 'xsd:string'))
);


$server->register(	'calculo_edades', // nombre del metodo o funcion
					array('datos_persona_entrada' => 'tns:datos_persona_entrada'), // parametros de entrada
					array('return' => 'tns:datos_persona_salida'), // parametros de salida
					'urn:mi_ws1', // namespace
					'urn:hellowsdl2#calculo_edades', // soapaction debe ir asociado al nombre del metodo
					'rpc', // style
					'encoded', // use
					'La siguiente funcion recibe un arreglo multidimensional de personas y calcula las Edades respectivas segun la fecha de nacimiento indicada' // documentation,
					 //$encodingStyle
);


function calculo_edades($datos) {

	$msg = '';	
	// Recorro el arreglo de datos enviados
	foreach ($datos as $key => $value){
		
		$edad_actual = date('Y') - $value['FechaNacimiento'];
		$msg .= 'La edad de '. $value['nombre'] .' es:' . $edad_actual . ' años ==== <br />'; 
	}
	
	return array('mensaje' => $msg);
}

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>

Para consumir el servicio en PHP el código sería el siguiente:

<?php

	require_once('lib/nusoap.php');
	
	$personas = array();
	$personas[1] =  array('cedula' => '123A', 'nombre' => 'Juan',	'FechaNacimiento'	=> 1965);
	$personas[2] =  array('cedula' => '123B', 'nombre' => 'Marcos',	'FechaNacimiento' 	=> 1980);
	$personas[3] =  array('cedula' => '123C', 'nombre' => 'Pedro',	'FechaNacimiento' 	=> 1990);
	$personas[4] =  array('cedula' => '123D', 'nombre' => 'Ana',	'FechaNacimiento'	=> 1995);
	$personas[5] =  array('cedula' => '123F', 'nombre' => 'Maria',	'FechaNacimiento'	=> 1972);
	
	
	$cliente = new nusoap_client('http://www.mauricioalpizar.com/ejemplos/nusoap/ce_server.php');
	//print_r($cliente);
	
	$datos_persona_entrada = array( "datos_persona_entrada" => $personas);

	$resultado = $cliente->call('calculo_edades',$datos_persona_entrada);
	
    print_r($resultado);
	
?>

URL para probar el resultado del código anterior:

http://www.mauricioalpizar.com/ejemplos/nusoap/ce_cliente.php

WSDL del WebService: http://www.mauricioalpizar.com/ejemplos/nusoap/ce_server.php?WSDL

Buena Suerte!!!.