如何在SOAP中发送数组?
问题描述:
我有一个PHP文件,它发送SOAP请求如何在SOAP中发送数组?
$client = new SoapClient('http://xyz');
$client->call('example', array('param1'=>'value2')
我想这样做使用了SoapUI这个同样的请求:
<soapenv:Envelope [..]>
<soapenv:Header/>
<soapenv:Body>
<urn:call soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<param1 xsi:type="xsd:string">example</param1>
<param2 xsi:type="xsd:anyType">
??
</param2>
</urn:call>
</soapenv:Body>
</soapenv:Envelope>
如何编码的XML上述例子吗?
答
它应该是这样的:
<soapenv:Envelope [..]>
<soapenv:Header/>
<soapenv:Body>
<urn:call soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<param1 xsi:type="xsd:string">example</param1>
<param2 xsi:type="xsd:anyType">
<param1 xsi:type="xsd:string">value2</param1>
</param2>
</urn:call>
</soapenv:Body>
</soapenv:Envelope>
答
使用json_encode()
然后发送数组作为字符串表示形式。
答
在这种情况下,有一个很好的PHP SOAP客户端功能:$client->__getLastRequest()
结果表明,该请求是建立这样的:
<param2 xsi:type="ns2:Map">
<item xsi:type="ns2:Map">
<key xsi:type="xsd:string">param1</key>
<value xsi:type="xsd:string">param2</value>
</item>
</param2>
看看上一个问题的答案 http:// stackoverf low.com/questions/577795/passing-array-to-soap-function-in-php – 2012-08-07 17:22:55