• Lun - Vie : 08:00 - 18:00

Mi Blog

Cómo crear un Servicio Web con PHP y SOAP

Cómo crear un Servicio Web con PHP y SOAP

(Tiempo estimado: 5 - 9 minutos)

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 ⬇️

🔥 HAZ CLICK AHORA 🔥

 

 

¿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 PHPPá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 PHPObteniendo 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!


⬇️ Compra en Amazon el hardware que utilizo ⬇️

🔥 HAZ CLICK AHORA 🔥
Raúl Prieto Fernández

Sitio Web: raulprietofernandez.net

Si quieres ir rápido, ve solo. Si quieres llegar lejos, ve acompañado.

Comentarios  

Leonardo Ulanosky
# Leonardo Ulanosky 15-06-2022 03:57
Solo una pregunta. Si lo corro en local anda perfecto, pero lo subo en alguna web vacía en un hosting, y me da error 500 al ejecutar la llamada al método.

Alguna pista de que es lo que deberé abrir o será el .htaccess ?? Desde ya muchas gracias.
Raúl Prieto Fernández
# Raúl Prieto Fernández 22-06-2022 12:16
Hola Leonardo Ulanosky:

Pásame el fichero a través de pastebin.com y lo reviso.

Saludos

No tienes permisos para escribir comentarios. Debes autenticarte con Facebook, Linkedin, Twitter o Google.

VIP RPF

Apúntate Gratis

Entra en la Comunidad VIP y consigue acceso a las descargas en PDF, Trucos y Videotutoriales ocultos y mucho más.... ¡Muy Pronto!
  • Lun - Vie : 08:00 - 18:00