soapclient example consumir consume php web-services soap soap-client

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é.