Consumir un servicio Web SOAP en PHP

Hola que tal, bienvenido a este nuevo artículo, en el que veremos como implementar un cliente y consumir un servicio Web (Web Services) SOAP en PHP.

Hoy en día el uso de Web Services es casi fundamental para cualquier empresa, básicamente la importancia radica en que está tecnología permite la interoperabilidad entre dos sistemas diferentes, lo que quiere decir que no importa en que lenguaje de programación esté desarrollado un software ya que siempre habrá la posibilidad de que ambos puedan conectarse y poder trabajar.

Terminología usada en un Web Services

Aunque el tema específico de este artículo no es hablar sobre la implementación de un Web Services como tal, existe algunas especificaciones o de alguna manera llamarlo términos, que se debe tener claro antes de empezar.

XML(eXtensible Markup Language:): La forma en que se comunican dos aplicativos usando un Web Services es a través archivos con extensión .xml, puesto que este formato permite representar la información de forma estructurada y permite que pueda ser procesada y almacenada por cualquier dispositivo

WSDL (Web Services Description Language): Es un protocolo que describe como se accede a las operaciones descritas dentro del Web Services, tipos de datos, puertos de conexión etc.

SOAP (Simple Object Access Protocol): Es el protocolo que define la estructura de los mensajes que se transmitirán entre dos sistemas.

Que herramientas se usa para crear el cliente en PHP?

Para consumir un servicio web en PHP vamos a usar NuSOAP, se que se puede usar una API nativa que proporciona PHP, pero hasta ahora no la he usado.

NuSOAP es una librería que contiene todas las clases que nos van ayuda a consumir el Servicio Web y que de hecho es muy fácil.

A continuación dejo el enlace de descarga Descarga NuSOAP.

Cómo haremos las pruebas?

Para esto es importante que tengamos acceso a un Web Services y que tengamos claro cuales son las interfaces (operaciones o métodos a los que se debe acceder) que expone el servicio para consumirlas.

Para este caso lo que vamos hacer es a consumir un Web Services de la Universidad de Alicante, ya que está disponible de manera publica. Específicamente vamos a consumir la interface wsasidepto.

La dirección que expone este Web Services es la siguiente:  https://cvnet.cpd.ua.es/servicioweb/publicos/pub_gestdocente.asmx?wsdl, como puedes ver al final muestra un archivo WSDL,  que es donde expone las interfaces que van a ser consumidas.

Código relevante del ejemplo

A continuación se describe como se consume una operación del Servicio Web.

Si te das cuenta, es muy sencillo crear un cliente y consumir una operación del servicio expuesto, únicamente lo que tendríamos que hacer ahora, es formatear el contenido de la variable $resultado, ya que viene en un arreglo, de acuerdo a la especificación mostrada en el wsdl. En el enlace a continuación se muestra todo el ejemplo completo donde también se formatea el contenido y se muestra sólo la información relevante.

A continuación dejo el proyecto completo donde se consume el servicio web desde GitHub

Espero que esta entrada haya sido de ayuda, nos vemos en la próxima entrada, saludos.

Opt In Image
Programación Web Full Stack
Suscríbete ahora y recibe los mejores contenidos sobre Programación Web en tu correo.

Tus datos estarán protegidos y 100% libre de Spam

Full Stack Developer, JavaScript, PHP, Java, Spring, Laravel, Vuejs, Blogger, aprendiendo y compartiendo conocimientos. Cursos de Programación Web en: https://programacionfullstack.com/

Artículos Recomendados

4 Thoughts to “Como crear un cliente y consumir un servicio Web SOAP en PHP”

  1. Mauricio Hurtado

    Hola tengo un ws que quiero consumir pero usa CDATA como hago para enviarlo por soap client y obtener sus datos? Ayuda por fa

    1. Elivar Largo

      Hola, la verdad no he tenido este tipo de problemas, pero te dejo un enlace de pronto te puede ayudar. Saludos

  2. René

    Hola, tengo un Web service bastante parecido que quiero consumir pero tengo que hacerlo en Laravel. Tendrás algún ejemplo de como hacerlo? Gracias. Saludos

    1. Elivar Largo

      Hola René de momento no tengo nada sobre el tema, intentaré hacer algo para los próximos posts. Saludos

Dejar un Comentario