2012-08-07 56 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>