Domanda

Vorrei restituire un oggetto utilizzando Zend_Soap. Voglio che anche l'oggetto data nel file WSDL. Ma non riesco a ottenere entrambi di lavorare insieme. E 'uno o l'altro.

1. WSDL di lavoro, ma oggetto non ritorno

Se nel phpdoc della mia funzione sul script del server di sapone, scrivo

 @return Application_Model_Soap_Test

I può vedere nel file WSDL

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

, ma quando ho eseguito lo script, restituisce una classe vuota:

stdClass Object
(
)

2. Ottenere oggetto, ma WSDL sbagliato

Se cambio informazioni phpdoc della funzione server per

@return mixed Application_Model_Soap_Test

I ottenere un retro oggetto con informazioni:

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

, ma il file WSDL è sbagliato

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

Tutte le idee? Grazie.

È stato utile?

Soluzione

È necessario passare una variabile opzione 'classmap' nel client.

http://www.php.net/manual/en/ soapclient.soapclient.php e http://www.php.net /manual/en/soapclient.soapclient.php sull'opzione 'classmap' passata nella matrice di opzione.

In sostanza dovrebbe essere un array mappare le vostre classi alle classi definite come gli oggetti restituiti nel file WSDL.

Altri suggerimenti

Hai provato a disattivare la cache?

In PHP come si può cancellare una cache WSDL?

Ho avuto lo stesso problema. Ogni richiesta che mi ha fatto restituito uno stdClass vuoto, anche se il WSDL era corretta. Dopo aver disabilitato la cache ha funzionato bene per me. Fare un tentativo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top