Cómo exponer un WebService SOAP con PHP

Inicio / Cómo hacer para... / Cómo exponer un WebService SOAP con PHP

¿Qué es un WebService?

Ya en el artículo sobre cliente SOAP di una pequeña definición de un WebService (Una más exhaustiva está en el curso de WebServices con PHP), por si no lo leíste te lo cuento:

Un WebService es una pequeña aplicación web diseñada para interactuar con otras aplicaciones (en lugar de hacerlo con personas).

Las dos aplicaciones que se comunican toman el rol de:

  1. Servidor: quien expone el servicio
  2. Cliente: quien lo consume

¿Qué es SOAP?

SOAP es un protocolo de intercambio de información basado en XML.

¿Cómo se implementa en PHP?

Ahora que estamos claros con las definiciones veamos un ejemplo:

server.php:

<?php

class MiClase
{
 public function saludar()
 {
 return 'Hola ' . func_get_args()[0] . PHP_EOL;
 }
}

try {
 $server = new SoapServer(
 null,
 [
 'uri'=> 'http://localhost:8080/soap_server.php',
 ]
 );

 $server->setClass('MiClase');
 $server->handle();
} catch (SOAPFault $f) {
 print $f->faultstring;
}

cliente.php

<?php

$client = new SoapClient(null, array(
      'location' => "http://localhost:8080/server.php",
      'uri'      => "http://localhost:8080/server.php",
      'trace'    => 1 ));

try {
	echo $return = $client->__soapCall("saludar", ["mundo!" ] );
} catch ( SOAPFault $e ) {
	echo $e->getMessage().PHP_EOL;
}

Para que todo esto tenga sentido, primero necesitamos tener un webserver levantado en localhost:8080. Para hacerlo simple, usemos el servidor incorporado al intérprete de PHP:

php -S localhost:8080 &

Y entonces, al ejecutar php soap_client.php veremos:

Hola mundo!

Si en lugar de publicar este script (server.php) en nuestro localhost lo subiéramos a un servidor accesible públicamente, cualquier aplicación conectarse a este servicio e invocar nuestro método saludar.

Puedes utilizar un archivo WSDL para darle más robustez al servicio (y hacerlo descubrible también), pero por el momento tienes todo lo necesario para permitir a otras aplicaciones interactuar con la tuya a través de un WebService SOAP.

¡Feliz integración! 🙂

mchojrin

Director Académico y Docente at Leeway Academy
Hola! Soy Mauro Chojrin, estudié la Lic. en Ciencias de la Computación en la Universidad de Buenos Aires.

Me desempeño como docente de programación desde el año 1997.

Pasé por diferentes instituciones (Escuela Técnica ORT, Digital House, EducacionIT, ITMaster, Escuela DaVinci entre otros).

Actualmente coordino los cursos dictados en Leeway Academy y desarrollo sistemas usando PHP y framework Symfony

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: