Mi Blog
👉 Cómo crear un Servicio Web con PHP y SOAP

Cómo crear un Servicio Web con PHP y SOAP

 
(10 votos)

SOAP permite crear Servicios Web para nuestros desarrollos Web de forma rápida y sencilla. Integrar un Servicio Web con SOAP y PHP es sumamente sencillo de entender. Con SOAP, el intercambio de información entre cliente y servidor se realiza a través de XML. Aunque en la actualidad existen métodos mas modernos como REST, SOAP no ha dejado de utilizarse y sigue utilizándose en multitud de proyectos, pequeños, medianos y grandes.

Seguid leyendo y os enseñaré como crear vuestro primer Servicio Web con PHP y SOAP...

⬇️ Compra en Amazon el hardware que utilizo ⬇️

🔥 ¡DESCÚBRELOS! 🔥

 

 

¿QUÉ ES SOAP?

SOAP (Simple Object Access Protocol), es un protocolo que permite crear servicios web sin estado, a través de TCP y con un formato de intercambio de información de XML.

Gracias a que funciona a través del protocolo de transporte TCP, se pueden utilizar: HTTP, SMTP o JMS. Se pueden utilizar diferentes lenguajes de programación para crear el servicio web cliente/servidor y está sumamente estandarizado.

SOAP es ampliamente utilizado en entornos empresariales.

Entre sus desventajas está que que es poco flexible y suele haber muchos errores a la hora de desarrollo si no se conocen los estándares de SOAP. A continuación veremos un sencillo ejemplo de SOAP con PHP.

 

 

SOAP: Simple Object Access Protocol

 

 

1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL

  • PC con entorno de desarrollo PHP+Apache instalado
  • Tener instalado un IDE es muy recomendado (Netbeans, Eclipse, VisualCode...)

 

 

2.- PÁGINA PRINCIPAL (CLIENTE)

Vamos a crear un pequeño Servicio Web que nos muestre la letra correspondiente a un número del DNI español. Primeramente crearemos un sencillo formulario Web con HTML y un poco de PHP. Copiaremos las siguientes líneas en un fichero llamado index.php:

<!DOCTYPE html>
<html>
<head>
<title>Calcular Letra DNI - Servicio Web + PHP + SOAP</title>
<link rel="stylesheet" type="text/css" href="/estilo.css">
</head>
<body>
<h1>Obtener letra DNI</h1>
<h2>Servicio Web + PHP + SOAP</h2>
<form action="index.php" method="post">
< ?php //IMPORTANTE: ELIMINA EL ESPACIO ANTES DE LA INTERROGACIÓN
print "<input type='text' name='dni' value='$dni'>";
print "<input type='submit' name='enviar' value='Calcular Letra'>";
print "<p class='error'>$error</p>";
print "<p style='font-size: 12pt;font-weight: bold;color: #0066CC;'>$resultado</p>";
?>
</form>
<div id="footer">Creado con <span class="red">♥</span> por: <a href="https://www.raulprietofernandez.net/">Raúl Prieto Fernández</a></div>
</body>
</html>

 

 

Ahora, en el mismo fichero index.php, antes del contenido anterior (o sea, justo al principio) añadiremos el siguiente código PHP que se encarga de llamar al fichero donde definimos el servidor SOAP (calcularLetra.php). Los principales campos que debemos editar son las variables $url y $uri. El código es bastante sencillo, una vez pulsado el botón de calcular letra, si el valor introducirdo es correcto, se creará un nuevo objeto llamado $cliente de la clase SoapClient. Una vez creado el objeto $cliente, tendremos acceso a las funciones definidas en la clase:

< ?php //IMPORTANTE: ELIMINA EL ESPACIO ANTES DE LA INTERROGACIÓN
// Vaciamos algunas variables
$error = "";
$resultado = "";
$dni = "";

// Iniciamos el cliente SOAP
// Escribimos la dirección donde se encuentra el servicio
$url = "https://www.raulprietofernandez.net/images/blog/211/DNI/calcularLetra.php";
$uri = "https://www.raulprietofernandez.net/images/blog/211/DNI/";
$cliente = new SoapClient(null, array('location' => $url, 'uri' => $uri));

// Ejecutamos las siguientes líneas al enviar el formulario
if (isset($_POST['enviar'])) {
// Establecemos los parámetros de envío
if (!empty($_POST['dni']) && (strlen($_POST['dni'])) >= 7) {
$dni = $_POST['dni'];
// Si los parámetros son correctos, llamamos a la función letra de calcularLetra.php
$resultado = "La letra es: " . $cliente->letra($dni);
} else {
$error = "<strong>Error:</strong> Debes introducir un DNI correcto<br/><br/>Ej: 45678987";
}
}
?>

 

 

SOAP PHP
Página principal

 

 

3.- PÁGINA SERVIDOR

Crearemos un fichero php llamado calcularLetra.php con el siguiente contenido:

< ?php //IMPORTANTE: ELIMINA EL ESPACIO ANTES DE LA INTERROGACIÓN
// Instanciamos un nuevo servidor SOAP
$uri="https://www.raulprietofernandez.net/images/blog/211/DNI/";
$server = new SoapServer(null,array('uri'=>$uri));
$server->addFunction("letra");
$server->handle();

// Función para obtener raíz cuadrada
function letra($dni) {
$resultado=substr("TRWAGMYFPDXBNJZSQVHLCKE",$dni%23,1);
return $resultado;
}
?>

 

 

En la siguiente imagen, se puede ver el funcionamiento correcto del cálculo de la letra de DNI con un pequeño Web Service con HTML/PHP y SOAP:

SOAP PHP
Obteniendo letra DNI con Web Service SOAP

 

 

4.- HOJA DE ESTILOS CSS3

Añadiremos un poco de "glamour" a la página con una pequeña hoja de estilos CSS3 para darle un poco de estilo a la página. Crearemos el fichero estilo.css con el siguiente contenido:

/* General */
html {
background-color: aliceblue;
}
body {
font-family: verdana, arial, sans-serif;
font-size: 14px;
margin: auto;
text-align: center;
}

/* Contenido */
h1 {
font-size: 20px;
font-weight: bold;
color: #0066CC;
text-transform: uppercase;
margin-left: 15px;
}
h2 {
font-size: 14px;
font-weight: bold;
color: black;
margin-left: 15px;
}

/* Formulario */
form {
margin-left: 15px;
}
.error {
color: red;
}

/* Footer */
#footer {
height: 20px;
background-color: black;
color: white;
text-align: center;
padding: 10px 0px 10px 0px;
position: fixed;
bottom: 0px;
width: 100%;
}
#footer .red {
color: red;
}

#footer a {
text-decoration: none;
color: yellow;
}

 

 

VER DEMO ONLINE

 

 

ENJOY!