2010-03-31 14 views
2

Je fais une demande SOAP identique, l'une en utilisant le Zend Framework et l'autre non. Le Zend ne fonctionne pas et la seule différence semble être l'espace de noms de l'enveloppe.Différentes enveloppes de savon - une fonctionne, l'autre échoue

Comment l'enveloppe est-elle définie et pourquoi l'un d'entre eux échouerait-il?

Zend Savon Appel

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://wsapi" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"> 
<env:Body> 
<ns1:incomingRequest env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"> 
<username xsi:type="xsd:string">myuser</username> 
<password xsi:type="xsd:string">mypass</password> 
<request xsi:type="xsd:string">&amp;lt;incoming-requests&amp;gt;&amp;lt;request description="getEmailMessageStatus"&amp;gt;&amp;lt;incoming-data&amp;gt;&amp;lt;email-message messageID="messageID"/&amp;gt;&amp;lt;/incoming-data&amp;gt;&amp;lt;/request&amp;gt;&amp;lt;/incoming-requests&amp;gt;</request> 
</ns1:incomingRequest> 
</env:Body> 
</env:Envelope> 

PHP Savon Appel

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://wsapi" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
<SOAP-ENV:Body> 
<ns1:incomingRequest> 
<username xsi:type="xsd:string">myuser</username> 
<password xsi:type="xsd:string">mypass</password> 
<request xsi:type="xsd:string">&lt;incoming-requests&gt;&lt;request description="getEmailMessageStatus"&gt;&lt;incoming-data&gt;&lt;email-message messageID="messageID"/&gt;&lt;/incoming-data&gt;&lt;/request&gt;&lt;/incoming-requests&gt;</request> 
</ns1:incomingRequest> 
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

Répondre

1

J'ai compris cela.

Il s'avère que le serveur Soap n'est compatible qu'avec SOAP version 1.1.

Dans Zend, vous pouvez spécifier la version comme ceci:

$client = new Zend_Soap_Client('wsdl url', array('soap_version' => SOAP_1_1)); 

Cela a changé l'enveloppe et le serveur de savon a commencé à répondre comme il se doit.