(PHP 5 >= 5.0.1, PHP 7)
SoapClient::__soapCall — Llama a una función SOAP
$function_name
, array $arguments
[, array $options
[, mixed $input_headers
[, array &$output_headers
]]] )Esta es una función de bajo nivel del API que se utiliza para hacer llamadas SOAP. Usualmente, en modo WSDL, las funciones soap pueden llamarse como métodos del objecto SoapClient. Este método es útil en módo no-WSDL cuando no se conoce la soapaction, la uri es diferente de la por defecto o cuando se envian y/o reciben encabezados SOAP.
Cuando se produce un error, llamar a una función SOAP puede causar a PHP lanzar una excepción o revolver el objecto SoapFault si las excepciones están desactivadas. Para comprobar si la llamada a la función falló capturar las excepciones SoapFault, comprobar el resultado con is_soap_fault().
function_name
Nombre de la función SOAP a llamar.
arguments
Un array de argumentos a pasar a la función. Puede ser bien un array ordenado o asociativo. Tenga en cuenta que la mayoría de los servidores SOAP requieren que los nombres de parámetros sean proveídos, en cuyo caso ha de ser un array asociativo.
options
Un array asociativo de opciones a pasar al cliente.
La opción location es la URL del servicio Web remoto.
La opción uri es el destino del espacio de nombres del servicio SOAP.
La opción soapaction es la acción a llamar.
input_headers
Un array de encabezados a ser enviados con la petición SOAP.
output_headers
Si se proporciona, este array se llenará con los encabezados de la respuesta SOAP.
Las funciones SOAP quizá devuelven uno, o múltiples valores. Si solo un valor es devuelto por la función SOAP, el valor retornado de __soapCall será un valor siemple (p.e.j. un integer, un string, etc). Si múltiples valores son retornados, __soapCall devolverá un array asociativo de los nombrados parámetros de salida.
En caso de error, si el objecto SoapClient fue construido con la opción
exceptions establecida a FALSE
, devolverá un objeto SoapFault.
Ejemplo #1 Ejemplo de SoapClient::__soapCall()
<?php
$client = new SoapClient("some.wsdl");
$client->SomeFunction($a, $b, $c);
$client->__soapCall("SomeFunction", array($a, $b, $c));
$client->__soapCall("SomeFunction", array($a, $b, $c), NULL,
new SoapHeader(), $output_headers);
$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
'uri' => "http://test-uri/"));
$client->SomeFunction($a, $b, $c);
$client->__soapCall("SomeFunction", array($a, $b, $c));
$client->__soapCall("SomeFunction", array($a, $b, $c),
array('soapaction' => 'some_action',
'uri' => 'some_uri'));
?>