Saltar la navegación

2.1.1.- Utilización de un servicio web (II).

El estilo de enlazado es "document/literal" (recuerda que nosotros vimos el "RPC/encoded" solamente), por lo que los elementos de tipo "message" tienen un formato distinto. Sin embargo, en base a su contenido (fíjate en los elementos que terminan en "Soap") se puede deducir también que:

  • El nombre de la función a la que debes llamar es "wstitulosuni".
    <wsdl:operation name="wstitulosuni">
  • Como parámetro de entrada le tienes que pasar un elemento de tipo "wstitulosuni" (dos string), y devolverá un elemento "wstitulosuniResponse" (un array).
    <wsdl:message name="wstitulosuniSoapIn">
    	<wsdl:part name="parameters" element="tns:wstitulosuni"/>
    </wsdl:message>
    <wsdl:message name="wstitulosuniSoapOut">
    	<wsdl:part name="parameters" element="tns:wstitulosuniResponse"/>
    </wsdl:message>
     . . .
    <wsdl:portType name="pub_gestdocenteSoap">
    	. . .
    	<wsdl:operation name="wstitulosuni">
    		<wsdl:input message="tns:wstitulosuniSoapIn"/>
    		<wsdl:output message="tns:wstitulosuniSoapOut"/>
    	</wsdl:operation>
    	. . .
    </wsdl:portType>
    
  • La URL para acceder al servicio, la puedes ver más abajo, de igual manera puedes observar que el servicio se ofrece para versión 1.1 y 1.2 de SOAP .
    <wsdl:service name="pub_gestdocente">
    	<wsdl:port name="pub_gestdocenteSoap" binding="tns:pub_gestdocenteSoap">
    		<soap:address location="https://cvnet.cpd.ua.es/servicioweb/publicos/pub_gestdocente.asmx"/>
    	</wsdl:port>
    	<wsdl:port name="pub_gestdocenteSoap12" binding="tns:pub_gestdocenteSoap12">
    		<soap12:address location="https://cvnet.cpd.ua.es/servicioweb/publicos/pub_gestdocente.asmx"/>
    	</wsdl:port>
        . . .
    </wsdl:service>

Con la información anterior, para utilizar el servicio desde PHP creas un nuevo objeto de la clase "SoapClient". Como el servicio tiene un documento WSDL asociado, en el constructor le indicas dónde se encuentra:

$cliente=new SoapClient("https://cvnet.cpd.ua.es/servicioweb/publicos/pub_gestdocente.asmx?wsdl");

Y para realizar la llamada a la función "wstitulosuni", incluyes los parámetros en un array:

$parametros=[
    'plengua'=>'es',
    'pcurso'=>'2019'
];
$titulos=$cliente->wstitulosuni($parametros);

La llamada devuelve un objeto de una clase predefinida en PHP llamada: StdClass. Si hacemos "var_dump($titulos)" obtenemos lo siguiente:

object(stdClass)[2]
  public 'wstitulosuniResult' => 
    object(stdClass)[3]
      public 'ClaseTitulosUni' => 
        array (size=113)

Vemos que nos ha devuelto un objeto stdClass dentro podemos observar que nos ha devuelto 113, títulos. Si recorremos $titulos con el código siguiente:

foreach($titulos as $k=>$v){
        foreach($v as $k1=>$v1){
            echo var_dump($v1);
        }
    }

Veremos lo siguiente:

Imagen de un apágina web donde se puede ver la salida de var_dumo un array de 113 elementos, donde se ven los 4 primeros de tipo stdClass y en cada uno de ellos los campos codigo, nombre, tipo, area, url e imagen.
Captura de pantalla Firefox (Elaboración propia)

Para saber más

En PHP existe una clase predefinida en el lenguaje que se llama "stdClass", que no tiene ni propiedades, ni métodos, ni clase padre; es una clase vacía. Podemos usar esta clase cuando necesitamos un objeto genérico al que luego el podremos añadir propiedades. 

Hay que tener en cuenta, que esta clase no pertenece a la clase de la que heredan todas las clases.