Saltar la navegación

2.1.- Utilización de un servicio web.

Vamos a comenzar viendo cómo crear en PHP una aplicación que se comunique con un servicio web para obtener información. Por ejemplo, imagínate que quieres conocer lo estudios oficiales que ofrece una Universidad para un curso concreto.

Lo primero que necesitas es una universidad que ofrezca esta información via WSDL. Para el siguiente ejemplo usaremos la Universidad de Alicante.

Para crear un cliente del servicio, deberás conocer los detalles del mismo (como mínimo, los parámetros de entrada y salida que debes usar, y cuál es la URL del servicio) y emplear en tu código la clase SoapClient. Para averiguar los detalles del servicio, puedes consultar el documento WSDL del servicio, disponible en la dirección: "https://cvnet.cpd.ua.es/servicioweb/publicos/pub_gestdocente.asmx?wsdl"

Este es el documento WSDL obtenido: Documento obtenido (pdf - 0,35 MB)

Esquema de funcionamiento del servicio web wstitulosuni. Con cada petición se pasa como parámetro un elemento wstitulosuni, y en la respuesta figura un elemento de tipo ArrayOfClaseTitulosUni.
Elaborado con DIA (Elaboración propia)
  • El alias del espacio de nombres correspondiente al XML Schema que utiliza el documento es:
    <wsdl:definitions targetNamespace="http://UASI/WS_GESTDOCENTE.wsdl">

  • En el documento puedes observa los siguiente, se espera un elemento de tipo "wstitulosuni" que serán dos códigos: "plengua" y "pcurso" de tipo string, además en ese orden:
    <s:element name="wstitulosuni">
    	<s:complexType>
    		<s:sequence>
    			<s:element minOccurs="0" maxOccurs="1" name="plengua" type="s:string"/>
    			<s:element minOccurs="0" maxOccurs="1" name="pcurso" type="s:string"/>
    		</s:sequence>
    	</s:complexType>
    </s:element>
  • La respuesta "wstitulosuniResponse" será un elemento de tipo "wstitulosuniResult".
    <s:element name="wstitulosuniResponse">
    	<s:complexType>
    		<s:sequence>
    			<s:element minOccurs="0" maxOccurs="1" name="wstitulosuniResult" type="tns:ArrayOfClaseTitulosUni"/>
    	</s:sequence>
    	</s:complexType>
    </s:element>
  • El tipo wstitulosuniResult es un array de tipo ClaseTitulosUni (arrayOfClaseTitulosUni). Este array tendrá los elementos siguientes:
    <s:complexType name="ClaseTitulosUni">
    	<s:sequence>
    		<s:element minOccurs="0" maxOccurs="1" name="codigo" type="s:string"/>
    		<s:element minOccurs="0" maxOccurs="1" name="nombre" type="s:string"/>
    		<s:element minOccurs="0" maxOccurs="1" name="tipo" type="s:string"/>
    		<s:element minOccurs="0" maxOccurs="1" name="area" type="s:string"/>
    		<s:element minOccurs="0" maxOccurs="1" name="url" type="s:string"/>
    		<s:element minOccurs="0" maxOccurs="1" name="imagen" type="s:string"/>
    	</s:sequence>
    </s:complexType>

Autoevaluación

Pregunta

El principal inconveniente de la extensión PHP SOAP es que:

Respuestas

No ofrece un interface de programación orientado a objetos.

Una vez que has programado un servicio web, no permite generar de forma automática el documento WSDL.

Retroalimentación