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"
(dosstring
), y devolverá un elemento "wstitulosuniResponse"
(unarray
).<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 deSOAP
.<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:
