如何在PHP中为SoapClient请求向数组添加属性

时间:2015-11-05 15:09:04

标签: php arrays soap soap-client

嗨我是使用Soap的新手,但一切都很顺利,我已经使用PHP soap-client编写了一个脚本,并且所有内容都远离一个具有属性的标记,我可以找到一种方法在调用服务之前在$ params列表中传递此内容。

我像这样建造参数: - (例外)

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

但是我需要XML: -

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

注意类型=&#34; EGoods&#34;在商品标签上,我如何在php中修改我的数组来解释这个属性?

当我按原样提交soap请求时,我收到的错误是货物不能为空或空。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

在手册中进行了一些挖掘后,我设法找到了一个有效的解决方案:)

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

可生产

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

此处找到解决方案PHP: SoapParam::SoapParam - Manual Comment 114146

我必须稍微修改它才能工作,如果你将我的数组结构与原始数组结构进行比较,你会看到我必须做出哪些更改。

答案 1 :(得分: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);