Question

Je voudrais revenir un objet en utilisant Zend_Soap. Je veux aussi l'objet donné dans le fichier WSDL. Mais je ne peux pas obtenir à la fois de travailler ensemble. Il est l'un ou l'autre.

1. travail WSDL, mais objet non retour

Si dans la phpdoc de ma fonction sur le script serveur de savon, j'écris

 @return Application_Model_Soap_Test

Je peux le voir dans le fichier WSDL

<message name="getPostcodeOut">
    <part name="return" type="tns:Application_Model_Soap_Test"/>
</message>

mais quand je lance le script, il retourne une classe vide:

stdClass Object
(
)

2. Obtenez objet, mais mal WSDL

Si je change l'information phpdoc de la fonction de serveur

@return mixed Application_Model_Soap_Test

Je reçois un objet de retour avec info:

stdClass Object
(
    [name] => Fred
    [age] => 40
)

mais le fichier WSDL est erroné

<message name="getPostcodeOut">
    <part name="return" type="xsd:anyType"/>
</message>

Toutes les idées? Merci.

Était-ce utile?

La solution

Vous devez passer une variable d'option 'classmap' dans le client.

Voir aussi http://www.php.net/manual/en/ soapclient.soapclient.php et http://www.php.net /manual/en/soapclient.soapclient.php sur l'option 'classmap' transmis dans le réseau de l'option.

Fondamentalement, il doit être un tableau cartographie vos classes aux classes définies comme les objets retournés dans le fichier WSDL.

Autres conseils

Avez-vous essayé de désactiver le cache?

En PHP comment pouvez-vous effacer un cache WSDL?

J'ai eu le même problème. Chaque demande, je me fait un retour stdClass vide, même si le WSDL était correct. Après avoir désactivé la mise en cache il a bien fonctionné pour moi. Lui donner un essai.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top