PHP 5 SAVON client retourne NULL quand le fichier WSDL fournis fonction est appelée

Je suis en train d'utiliser un webservice spécifiques des utilisateurs de mon application PHP. J'ai utilisé exactement la même webservice dans ASP.NET avec le succès.

En gros, je fais tout comme le PHP doc me dit, et j'utilise les mêmes méthodes/variables que j'ai utilisé dans ASP.NET (pour le webservice lui-même), mais je n'arrive pas à obtenir un résultat.

La fonction est répertoriée dans l' __getFunctions() et doit retourner anyType, qui, si je comprends correctement, c'est l'équivalent de mixed en PHP:

array(1) { [0]=>  string(63) "anyType basicSearch(string $sharedSecret, string $searchParams)" } 

Quand je fais appel basicSearch() cependant, il semble renvoie la valeur NULL.

basicSearch() est censé renvoyer un document XML avec les informations. Dans ASP.NET j'ai utilisé pour tout simplement jeté la réponse, je crois, et XmlDocument. Dois-je le faire en PHP? Avec la représentation d'un document XML (SimpleXML, DOM, etc.)?

Pourrait-il montrer que NUL juste parce que PHP ne peut pas comprendre le format?

Je fais quelque chose de mal en PHP? Ou dois-je chercher dans le webservice lui-même et essayez de déboguer sur le côté?

<?php
    $client = new SoapClient($wsdl_url);

    echo $client->__getFunctions();
    echo "<br />\n";
    echo $client->basicSearch($key, $req);
?>

PS: je suis en utilisant le PHP 5 de la bibliothèque. Peut-être l'aide d'un autre bibliothèque comme nu-savon aiderait? Il semble être de plus en doc en ligne à ce sujet.


Mise à jour:

L'aide d'un tableau de passer le paramètre ne fonctionne pas, le SAVON s'attend à séparer les arguments. Appelant __getLastRequest() retourne une chaîne de caractères de la concaténation de touche $et $req avec aucune autre XML. Appelant __getLastResponse() retourne une chaîne vide. Aucune exception n'est levée que ce soit. Il semble que PHP ne sait pas quoi faire avec les arguments que je lui donne, même si elle a analysé le fichier WSDL depuis, je reçois la fonction que j'ai utiliser dans la liste lorsque je l'appelle __getFunctions().

Toute aide serait appréciée.

La mise à jour": Toujours pas de solution de travail. Je suis perplexe...

Notez que l'écho d'un tableau vous donnera toujours 'Array', parce que c'est comme un tableau convertit une chaîne de caractères. essayez d'utiliser print_r() ou var_dump().
Yup, je reçois maintenant le bon fonctionnement répertoriés. Merci, en fait, je savais que et manqués. Problème de mise à jour.
Votre exemple de code ne vérifie pas pour les exceptions qui pourraient faire jeter par le client - avez-vous omettre ce pour des raisons de simplicité de l'exemple? Si non, je te suggère d'ajouter que vérifier, via les try/catch, comme il peut vous donner quelques messages d'erreur utiles.
Pour des raisons de débogage, n'est-ce pas de ne pas avoir try/catch mieux que toutes les exceptions levées sera affiché, et n'est pas pris?

OriginalL'auteur | 2009-08-25