D'accord, je pense que j'ai besoin d'une autre paire d'yeux pour regarder cela. Je fais un simple appel php soapclient à un service Web echo sur un serveur distant. Je suis sûr que je n'ai pas de fautes de frappe et que l'appel de fonction est correct. Cependant, je reçois une erreur fatale affirmant que la fonction n'est pas une méthode valide. Voici un var_dump des types de services Web.
array (4) {[0] => string (88) "struct EspException {string Code; string Audience; string Source; string Message;}" [1] => string (71) "struct ArrayOfEspException {string Source; EspException Exception ;} "[2] => chaîne (43)" struct EchoTestRequest {chaîne ValueIn;} "[3] => chaîne (45)" struct EchoTestResponse {chaîne ValueOut;} "}
Erreur fatale: exception SoapFault non interceptée: la fonction [Client] ("EchoTestRequest") n'est pas une méthode valide pour ce service dans /home/grafixst/public_html/cpaapp/echo_test.php:38 Trace de pile: # 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 } jeté dans /home/grafixst/public_html/cpaapp/drew/echo_test.php sur la ligne 38
Voici le code que j'utilise pour passer l'appel:
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>";
Une simple demande pour les fonctions disponibles du service Web a résolu le problème.
$functions = $client->__getFunctions ();
var_dump ($functions);
EchoTestRequest n'était pas un appel de fonction valide. L'appel de fonction approprié était EchoTest, qui est illustré par le vidage de la variable de fonction.
array(1) { [0]=> string(54) "EchoTestResponse EchoTest(EchoTestRequest $parameters)" }
Je suppose que vous n'êtes pas une faute de frappe et que la méthode est réellement disponible.
Essaye ça
ini_set("soap.wsdl_cache_enabled", "0");
C'est peut-être parce que wsdl a été mis en cache.