我从不同的Magento安装中得到了两种不同的响应.它们被认为是相同的,并且两者都可以工作,但是我的Axis Java客户端应用无法解析第二个响应.而且我不知道某些更新版本的Axis是否可以同时解析这两者.
问题是:从SOAP格式的角度来看,这两个响应是否都应很好地解析为相同的结果?
回应1:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:Magento"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<ns1:salesOrderListResponse>
<result SOAP-ENC:arrayType="ns1:salesOrderEntity[24]" xsi:type="ns1:salesOrderEntityArray">
<item xsi:type="ns1:salesOrderEntity">
<increment_id xsi:type="xsd:string">100000056-1</increment_id>
<parent_id xsi:type="xsd:string">0</parent_id>
...
回应2:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:Magento"
xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:salesOrderListResponse>
<result SOAP-ENC:arrayType="ns2:Map[30]" xsi:type="ns1:salesOrderEntityArray">
<item xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">increment_id</key>
<value xsi:type="xsd:string">200000281</value>
</item>
<item>
<key xsi:type="xsd:string">parent_id</key>
<value xsi:type="xsd:string">0</value>
</item>
...
更新:
两种安装都使用相同的Magento版本1.3.2.4.第二次安装正在运行PHP 5.2.13.可能与PHP版本或已安装的PHP soap框架有关吗?
解决方法:
当然,这是由于安装中使用了Soap框架而发生的.
在这里看到Webserver requirements.
顺便说一下,众所周知Axis 1.4存在以下问题:
<value xsi:type="xsd:string">200000281</value>
要在Axis中工作,应为:
<value xsi:type="soapenc:string">200000281</value>
有关更多信息,请参见here,这似乎与您面临的问题相同.
Here是一个线程,可能也可以为您提供帮助.