2015-11-05 70 views
0

您好我是使用Soap的新手,但一切都很順利,我已經使用PHP soap-client編寫了一個腳本,並且所有內容都遠離一個標籤有一個屬性,我可以想出一個方法在調用服務之前在$ params列表中傳遞它。如何添加SoapClient請求數組的屬性到PHP

林建設,像這樣的PARAMS: - (excert)

'Goods' => array(
     'Description' => '$Description','Quantity' => '$qty'); 

但我需要的XML是: -

<Goods Type="EGoods">    
      <Description>Test</Description> 
      <Quantity>1</Quantity> 
</Goods> 

注類型= 「EGoods」 上的商品標籤,我如何修改我的數組在PHP中以解釋此屬性?

當我按原樣提交肥皂請求時,出現錯誤,說貨物不能爲空或空。

謝謝任何​​幫助。

+0

你就不能這樣做:'「商品類型=‘EGoods’」 =>陣列(' – Daan

+0

@Daan沒有,我得到的,當我試圖這樣沒有發現錯誤,並且輸出的XML中缺少整個商品 –

回答

1

後有的在說明書中周圍挖我設法找到它的工作原理:)

'Goods' => array('_' => '', 'Type'=>'EGoods', 
     'Description' => '$Description', 'Quantity' => '$qty'); 

主要生產在這裏找到PHP: SoapParam::SoapParam - Manual Comment 114146

我必須稍微修改它

<Goods Type="EGoods">    
     <Description>Test</Description> 
     <Quantity>1</Quantity> 
</Goods> 

解決方案的解決方案如果您將我的數組結構與原始數組結構進行比較,您會看到我必須做出哪些更改。

保羅

0
$var = new MessageHeaderSoapStruct; 
$var->From = 'foo'; 
$var->To  = 'bar'; 
$var->version = 1; 
$namespace = 'http://xxx'; # Namespace of MessageHeader WSDL element 
$MessageHeader = new SoapVar($var, SOAP_ENC_OBJECT, 'MessageHeader', $namespace);