NuSOAP y PHP

Recibir contenido Encodes data with MIME base64 con nusoap y PHP

Hola!, aquí les dejo un ejemplo de un WebService con nusoap que recibe el contenido de un archivo en  base-64 encoded (enviar archivos adjuntos) al server/webservice, ojo! que cuando consumes el WebService lo que le vas a enviar es un string codificado, esto para que tu WebService “descodifique” y pueda construir el archivo con el contenido enviado y almacene tu archivo adjunto.

Del lado del cliente seria ( Consumo del WebService):
url:http://www.mauricioalpizar.com/ejemplos/nusoap/ws-client-file.php

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

# construyo un cliente nusoap_client
$client = new nusoap_client('http://www.mauricioalpizar.com/ejemplos/nusoap/getfile1.php?wsdl');


# el servicio se llama recibir_contenido
# y recibe dos variables/parametros
# nombre_arhivo como quiero que se llame en el server.
# el string en base64

$result = $client->call('recibir_contenido', array( 'nombre_archivo' => 'archivo.txt',
													'contenido' => 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw=='));

# imprimo el resultado del servicio
print_r($result);

?>

Le mando como parametros el nombre del archivo (nombre_archivo) y el String (contenido) en base64encode previamente codificado, esto quiere decir que antes de consumir el WebService de alguna manera debes leer el archivo y codificar el contenido para poder enviarlo.

<?php
$str = 'This is an encoded string';
echo base64_encode($str);
?>

Se supone que $str debería ser el contenido de tu archivo previamente leído ejemplo con fread…. antes de consumir el WebService.

Ahora, del Lado del Server la programación con nusoap seria así, mi arhivo se llama “getfile1.php”:

<?php
	// Pull in the NuSOAP code
	require_once('lib/nusoap.php');
	
	// Create the server instance
	$server = new soap_server;
	
	// Initialize WSDL
	$server->configureWSDL('Mi WebService Receive Base64_encode', 'urn:getfile1');


	$server->register(
					 'recibir_contenido',       // method name
					 array( 'nombre_archivo' => 'xsd:string',
					 	  	'contenido' => 'xsd:string'),  // input parameters
					 array('mensaje' => 'xsd:string'), // output parameters
					 'urn:getfile1',      // namespace
					 'urn:getfile1/getFile',    // SOAPAction
					 'rpc',        // style
					 'encoded'       // use
	);	
	function recibir_contenido ($nombre_archivo,$contenido){

		//$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==';
		$data =  base64_decode($contenido);
		file_put_contents($nombre_archivo, $data);
		
		$msg = "Archivo Creado. <a href='{$nombre_archivo}'>Click</a>"; 
		return $msg;

		
	}//
	
	



// Use the request to (try to) invoke the service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : 
'';
$server->service($HTTP_RAW_POST_DATA);

?>

Cuando consumes el WS, este debería haber creado un archivo llamado “archivo.php” con el contenido “This is an encoded string”

Url de consumo del WS: http://www.mauricioalpizar.com/ejemplos/nusoap/ws-client-file.php

Url del WebService: http://www.mauricioalpizar.com/ejemplos/nusoap/getfile1.php

Ejemplo de como Consumir un Web Service utilizando NuSOAP y PHP ( Parte II)

Gracias a un comentario recibido en mi blog con respecto al ejemplo anterior (http://www.mauricioalpizar.com/ejemplo-de-como-programar-un-web-service-utilizando-nusoap-y-php/) de como programar un WebService del lado del servidor, no puse el ejemplo de como consumirlo.

Aquí les dejo el ejemplo de como consumir el WebService utilizando NuSOAP y PHP

Copias el siguiente código y lo colocas en un archivo .php, recuerda el include de la libreria nusoap.php

<pre>
<?php

	require_once('lib/nusoap.php');
	
	$cliente = new nusoap_client('http://www.mauricioalpizar.com/ejemplos/nusoap/mi_ws1.php');
	//print_r($cliente);
	
	$datos_persona_entrada = array( "datos_persona_entrada" => array(	
																	'nombre'  	=> "Mauricio A.",
																	'email'		=> "ealpizar@ticosoftweb.com",
																	'telefono'	=> "8700-5455",
																	'ano_nac'	=> 1980)
																	);

	$resultado = $cliente->call('calculo_edad',$datos_persona_entrada);
	
	print_r($resultado);
	
?>
</pre>

El resultado deberia ser algo asi:

Array
(
    [mensaje] => Hola, Mauricio A.. Hemos procesado la siguiente información ealpizar@ticosoftweb.com, telefono8700-5455 y su Edad actual es: 34.
)

Url del Ejemplo: http://www.mauricioalpizar.com/ejemplos/nusoap/consumo-ws.php

Espero les ayude!.