Frage

Ich möchte ein Objekt mit Zend_Soap zurückzukehren. Ich mag auch das Objekt in der WSDL-Datei angegeben. Aber ich kann nicht beide zusammen an der Arbeit. Es ist entweder das eine oder das andere.

1. WSDL arbeiten, aber nicht Gegenstand der Rückkehr

Wenn in der phpdoc meiner Funktion auf dem SOAP-Server-Skript, ich schreibe

 @return Application_Model_Soap_Test

ich es in der WSDL-Datei sehen

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

aber wenn ich das Skript ausführen, es gibt eine leere Klasse:

stdClass Object
(
)

2. Holen Objekt, aber falsch WSDL

Wenn ich die phpdoc Info-Server-Funktion der ändern

@return mixed Application_Model_Soap_Test

ich ein Objekt zurück mit Informationen erhalten:

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

aber die WSDL-Datei ist falsch

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

Irgendwelche Ideen? Danke.

War es hilfreich?

Lösung

Sie müssen eine 'classmap' Option Variable in dem Client zu übergeben.

Siehe auch http://www.php.net/manual/en/ soapclient.soapclient.php und http://www.php.net /manual/en/soapclient.soapclient.php über die 'classmap' Option in der Option Array übergeben.

Im Prinzip sollte es eine Array Abbildung Ihre Klassen zu den definierten Klassen, wie die zurückgegebenen Objekte in der WSDL-Datei.

Andere Tipps

Haben Sie versucht, das Caching zu deaktivieren?

In PHP, wie können Sie eine WSDL-Cache löschen?

Ich hatte das gleiche Problem. Jede Anfrage Ich habe mich wie ein leeres stdClass zurückgegeben, obwohl die WSDL richtig war. Nach Caching deaktivieren es funktionierte gut für mich. Probieren Sie es aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top