consumir - soapclient php example
Petición PHP SoapClient: no es un método válido para este servicio (2)
Está bien, creo que necesito otro par de ojos para mirar esto. Estoy haciendo una llamada simple de php soapclient a un servicio web echo en un servidor remoto. Estoy bastante seguro de que no tengo ningún error tipográfico y que la llamada a la función es correcta. Sin embargo, recibo un error fatal al afirmar que la función no es un método válido. A continuación se muestra un var_dump de los tipos de servicios web.
array (4) {[0] => cadena (88) "struct EspException {cadena Código; cadena Audience; cadena Fuente; cadena Mensaje;}" [1] => cadena (71) "struct ArrayOfEspException {cadena Fuente; EspException Exception ;} "[2] => cadena (43)" struct EchoTestRequest {string ValueIn;} "[3] => cadena (45)" struct EchoTestResponse {string ValueOut;} "}
Error fatal: excepción de SoapFault no capturada: la función [Client] ("EchoTestRequest") no es un método válido para este servicio en /home/grafixst/public_html/cpaapp/echo_test.php:38 Stack trace: # 0 / home / grafixst / public_html /cpaapp/echo_test.php(38): SoapClient -> __ call (''EchoTestRequest'', Array) # 1 /home/grafixst/public_html/cpaapp/echo_test.php(38): SoapClientAuth-> EchoTestRequest (Array) # 2 {main } arrojado en /home/grafixst/public_html/cpaapp/drew/echo_test.php en la línea 38
Aquí está el código que estoy usando para hacer la llamada:
<?php
require_once(''SoapClientAuth.php'');
ini_set("soap.wsdl_cache_enabled", "0");
#- Loading the WSDL document
$server = "https://wsonline.seisint.com/WsAccurint/EchoTest?ver_=1.65";
$wsdl = $server . "&wsdl";
$client = new SoapClientAuth($wsdl,
array(
''login'' => $username,
''password'' => $password
));
$types = $client->__getTypes();
var_dump($types);
echo "</br>";
$req = $client->EchoTestRequest(array(''ValueIn'' => ''echo''));
print $req->ValueOut;
echo "</br>";
?>
Una simple solicitud de las funciones disponibles del servicio web resolvió el problema.
$functions = $client->__getFunctions ();
var_dump ($functions);
EchoTestRequest no era una llamada de función válida. La llamada a la función adecuada fue EchoTest, que se ilustra mediante las funciones variable dump.
array(1) { [0]=> string(54) "EchoTestResponse EchoTest(EchoTestRequest $parameters)" }
Supongo que no es un error tipográfico y el método está realmente disponible.
Prueba esto
ini_set("soap.wsdl_cache_enabled", "0");
Es posible que se deba a que wsdl estaba en la memoria caché.