multidimensional array php soap wsdl nusoap

php - nusoap multidimensional array



La función nuSoap no es un método válido (3)

Al intentar crear una instancia de mi método nuSoap authenticateUser , dice:

Error fatal: excepción SoapFault no detectada: la función [Client] ("authenticateUser") no es un método válido para este servicio en /Applications/MAMP/htdocs/projo/dev/home.php:14

Pero cuando reemplazo el nombre de ese método por uno que ya funciona, todo funciona bien. Entonces, creo que la sintaxis de instanciación no está mal.

/*----------- Authenticate User ------------*/ $server->register( // method name ''authenticateUser'', // input parameters array(''sessionUserName'' => ''xsd:string'', ''sessionHash'' => ''xsd:string'', ''user'' => ''xsd:string'', ''pass'' => ''xsd:string''), // output parameters array(''return'' => ''xsd:string''), // namespace $namespace, // soapaction $namespace . ''#authenticateUser'', // style ''rpc'', // use ''encoded'', // documentation ''authenticates a user and returns a json array of the user info'' ); function authenticateUser($sessionUserName, $sessionHash, $user, $pass) { //Check to see if a countryCode was provided if ($sessionUserName != '''' && $sessionHash != '''' && $user == $GLOBALS[''wsUser''] && $pass == $GLOBALS[''wsPass'']) { $suid = ''AUTH''.$GLOBALS[''guid''].''SESSION''; $database = new SQLDatabase(); $database->openConnection(); $database->selectDb(); //Query $sql = "SELECT * FROM members WHERE member_email=''" . $sessionUserName . "'' LIMIT 1"; //Query MySQL $return = $database->query($sql); $userDetails = $database->fetch_array( $return ); if(!empty($userDetails)) { $userDetails[0][''authSession''] = $suid; $newArr = $userDetails[0]; $response = json_encode($newArr); } /*print $sql.''<br /><pre>''; print_r($response); echo ''</pre>'';*/ //Throw SQL Errors if (!mysql_query($sql)) { die(''Error: '' . mysql_error()); } //Return on Success return $response; //Close Connection mysql_close($con); } else { return ''Error: You must supply all of the inputs!x''; } }

Hay dos cosas que puedo pensar que causarían este error:

  1. Más probable: mi registro de la función es de alguna manera incorrecta, aunque la guía wsdl muestra que la función está registrada correctamente y he podido consumir el método con éxito a través del programa SoapUI .

  2. Menos probable: de alguna manera, la función ya no está rota, pero está en caché y veo un viejo error.

La pregunta : cuando trato de consumir este método de servicio de soap través de PHP , ¿por qué obtengo un error de salida que indica que esta función no existe en el servicio, cuando es evidente?


Conjunto

ini_set("soap.wsdl_cache_enabled", "0");

En cada archivo, use soap desde, o establezca wsdl_cache_enabled en 0 en su archivo php.ini .

[soap] ; Enables or disables WSDL caching feature. soap.wsdl_cache_enabled=0


Si está en Linux, también puede eliminar directamente el archivo wsdl en caché de / tmp / dir


Fue el CACHE !!! estúpido. Todo lo que tenía que hacer era cerrar mi computadora e irme a la cama. Cuando me desperté, volví a ejecutar el archivo y funcionó como un amuleto.

Esta es la segunda vez que esto sucede con una función en un servicio SOAP.

Ahora necesito saber cómo borrar el caché de un servicio de jabón. (nuSoap)