我扩展了 Magento V2 API,因此创建了一个 wsdl.xml。我的网络服务返回一个关联多数组。我google了一下,发现了两个复杂类型的定义:
<complexType name="associativeMultiArray">
<all>
<element name="associativeArray" type="typens:associativeArray" minOccurs="0" />
</all>
</complexType>
<complexType name="stringArray">
<all>
<element name="multi_data" type="typens:associativeMultiArray" minOccurs="0" />
</all>
</complexType>
<message name="methodResponse">
<part name="result" type="typens:stringArray" />
</message>
另一个:
<complexType name="associativeMultiArray">
<complexContent>
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType" wsdl:arrayType="typens:associativeMultiEntity[]"/>
</restriction>
</complexContent>
</complexType>
<complexType name="associativeMultiEntity">
<all>
<element name="key" type="xsd:string"/>
<element name="value" type="typens:ArrayOfString"/>
</all>
</complexType>
<complexType name="ArrayOfString">
<complexContent>
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
</restriction>
</complexContent>
</complexType>
<message name="methodResponse">
<part name="result" type="typens:associativeMultiArray" />
</message>
问题是,这两个都不起作用。如果我在查询后输出结果,我得到:
Array
(
[0] => stdClass Object
(
)
)
array('test)
我返回or没关系array('key'=>'value')
,它总是相同的输出。基本上我有两个问题:
- 是
ArrayOfString
,associativeArray
和associativeMultiArray
以下声明:<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Magento"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/>
? - 如果我有非常复杂的数组结构,例如 10 维关联数组,是否必须在 wsdl.xml 中声明每个维度?我该如何处理?它是如何工作的?为什么上述声明不起作用?