Php 如何使用项目列表为soap响应定义WSDL复杂类型
我正在使用php soapServer/soapClient类和wsdl创建一个web服务。有些服务应该返回项目列表。服务返回如下内容:Php 如何使用项目列表为soap响应定义WSDL复杂类型,php,xml,web-services,soap,wsdl,Php,Xml,Web Services,Soap,Wsdl,我正在使用php soapServer/soapClient类和wsdl创建一个web服务。有些服务应该返回项目列表。服务返回如下内容: <SOAP-ENV:Envelope ...> <SOAP-ENV:Body> <ns1:getTransactionsResponse> <return xsi:type="ns2:Map"> <item> <key xsi:type
<SOAP-ENV:Envelope ...>
<SOAP-ENV:Body>
<ns1:getTransactionsResponse>
<return xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">result</key>
<value SOAP-ENC:arrayType="ns2:Map[65]" xsi:type="SOAP-ENC:Array">
<item xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">id</key>
<value xsi:type="xsd:int">283</value>
</item>
<item>
...
</item>
...
</item>
</item>
</return>
</ns1:getItemsResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
<result>
<item>
<attr1>value1</attr1>
<attr2>value2</attr2>
....
</item>
<item>
...
</item>
</result>
编辑
我的WSDL:
...
端口类型:
<operation name="getTransactions">
<input message="tns:getTransactionsRequest" />
<output message="tns:getransactionsResponse" />
</operation>
<operation name="getVirtualTransactions">
<soap:operation soapAction="urn:getTransactionsAction" />
<input>
<soap:body use="encoded" namespace="urn:XYZ" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</input>
<output>
<soap:body use="encoded" namespace="urn:XYZ" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</output>
</operation>
绑定:
<operation name="getTransactions">
<input message="tns:getTransactionsRequest" />
<output message="tns:getransactionsResponse" />
</operation>
<operation name="getVirtualTransactions">
<soap:operation soapAction="urn:getTransactionsAction" />
<input>
<soap:body use="encoded" namespace="urn:XYZ" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</input>
<output>
<soap:body use="encoded" namespace="urn:XYZ" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</output>
</operation>
我不知道,如果我在谷歌上搜索不好,但我找不到任何解决办法。因此,我很乐意提供一些简单的示例,链接到教程或文档,以及wsdl的外观。或者我必须改变阵列的孔结构?
我正在寻找最佳实践,即如何在服务器端准备响应作为项目数组及其wsdl定义。问题已解决。我只是将我的响应数组转移到对象中,现在我得到了我问题中所期望的soap响应形式。不知道为什么,但它可以工作。在任何方面都没有帮助?你能在这里发布,我应该在哪个关键字下搜索它吗?也许我更愿意看到具体的例子,是你在问题中写的,你正在用wsdl创建。目前还不清楚WSDL的哪一部分存在问题。您只显示到目前为止的结果差异。这就是我问的原因。如果您走了那么远,那么也将WSDL定义放在这里,这会给您带来麻烦,否则很难说备选方案是什么。如果不是关于编写您自己的WSDL,请将您的问题说得更清楚。在任何情况下,你都应该提供一个自我包含的例子,可以很容易地执行,重现你的问题。是的,你是对的。这个问题还不完全清楚,但我希望有人能将经过验证的wsdl与我的数组结构对应起来。是我的错。我在问题中添加了实际的wsdl。这就足够了吗?谢谢你花时间为你自己的问题贴出答案。请考虑接受你的答案,让其他人知道这已经被证实了。