不同的肥皂信封 - 一个工作,另一个失败

时间:2010-03-31 14:07:39

标签: php zend-framework soap envelope

我正在制作一个相同的SOAP请求,一个使用Zend Framework,另一个不使用。 Zend一个不工作,唯一的区别似乎是信封名称空间。

信封是如何设定的,为什么其中一个会失败?

Zend Soap Call

<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 Soap Call

<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> 

1 个答案:

答案 0 :(得分:1)

我已经想到了这一点。

事实证明,Soap服务器只与SOAP 1.1版兼容。

在Zend中,您可以指定如下版本:

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

这改变了信封,Soap服务器开始响应它。