2012-08-07 50 views
1

我有一个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上述例子吗?

+0

看看上一个问题的答案 http:// stackoverf low.com/questions/577795/passing-array-to-soap-function-in-php – 2012-08-07 17:22:55

回答

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

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

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>