Saltar la navegación

2.1.3.- Utilización de un servicio web (IV).

Diagrama de clases de la clase SoapClient, en ella se pueden ver los métodos de esta clase.
Diagrama DIA (Elaboración propia)

Si estás usando un documento WSDL para acceder al servicio web, la clase SoapClient implementa dos métodos que muestran parte de la información que contiene; concretamente, los tipos de datos definidos por el servicio, y las funciones que ofrece. Para conocer esta información, una vez creado el objeto, debes utilizar los métodos __getTypes y __getFunctions respectivamente.
<?php
$cliente = new SoapClient("https://cvnet.cpd.ua.es/servicioweb/publicos/pub_gestdocente.asmx?wsdl");
$funciones = $cliente->__getFunctions();
echo "<ul>";
foreach ($funciones as $k => $v) {
    echo "<li><code>$v</code></li>";
}
echo "</ul>";
<?php
$cliente = new SoapClient("https://cvnet.cpd.ua.es/servicioweb/publicos/pub_gestdocente.asmx?wsdl");
$tipos = $cliente->__getTypes();
echo "<ul>";
foreach ($tipos as $k => $v) {
    echo "<li><code>$v</code></li>";
}
echo "</ul>";

El resultado obtenido es:

Para "__getFunctions()"

Listado de funciones
Captura de pantalla Firefox (Elaboración propia)

Para "__getTypes()"

Listado de tipos.
Captura de pantalla Firefox (Elaboración Propia)

Donde las funciones aparecen duplicadas, dado que el servicio web, como ya vimos,  ofrece dos versiones de la misma: una para SOAP 1.1 y otra para SOAP 1.2.

La extensión "PHP SOAP" también incluye opciones de depuración muy útiles para averiguar qué está pasando cuando la conexión al servicio web no funciona como debería. Para habilitarlas, cuando hagas la llamada al constructor de la clase SoapClient, debes utilizar la opción trace en el array de opciones del segundo parámetro.

$cliente = new SoapClient(
    "https://cvnet.cpd.ua.es/servicioweb/publicos/pub_gestdocente.asmx?wsdl",
    array('trace'=>true)
);

Para saber más

Existen bastantes opciones que se pueden utilizar con el constructor "SoapClient", pero si el servicio web dispone de un documento WSDL, normalmente no necesitarás utilizar ninguna. En caso contrario deberás definir al menos las opciones "location" (la URL en la que se encuentra el servicio) y "uri" (la ruta (target) des espacio de nombres (namespace) del servicio SOAP)

Constructor SoapClient.

Reflexiona

Una vez activada la depuración, podrás utilizar los siguientes métodos para revisar los últimos mensajes SOAP enviados y recibidos.

Métodos para depuración de la clase SoapClient
Método Significado
__getLastRequest Devuelve el XML correspondiente a la última petición enviada.
__getLastRequestHeaders Devuelve el XML correspondiente a los encabezados de la última petición enviada.
__getLastResponse Devuelve el XML correspondiente a la última respuesta recibida.
__getLastResponseHeaders Devuelve el XML correspondiente a los encabezados de la última respuesta recibida.