如何在SOAP中发送数组?

时间:2012-08-07 17:08:53

标签: php xml soap soapui soap-client

我有一个PHP文件,它发送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中编码上述示例?

3 个答案:

答案 0 :(得分:1)

应该是这样的:

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

答案 1 :(得分:0)

使用json_encode()然后将数组作为字符串表示形式发送。

答案 2 :(得分:0)

在这种情况下,有一个很好的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>