PHP SOAP - 传递具有相同名称的参数

时间:2018-04-19 20:30:06

标签: php arrays xml soap parameters

我正在使用php和SOAP调用API。 请求的某些部分如:

<fin:Customer>
 <fin1:Address>
 <fin1:City>City</fin1:City>
 <fin1:Country>CA</fin1:Country>
 </fin1:Address>
<fin:Customer>   

使用数组很容易:

'Customer' => array(
                'Address' => array (
                'City' => $City,
                'Country' => $Country,
                ),

但我的挑战是这一部分:

<fin:Criterions>
 <fin:Criterion name="VALX">17</fin:Criterion>
 <fin:Criterion name="VALOP">1</fin:Criterion>
 <fin:Criterion name="VALLP">10</fin:Criterion>
 <fin:Criterion name="TMS">3</fin:Criterion>

因为所有标签都具有相同的名称,并且它们还具有名称参数和值。 我怎样才能将它传递给SOAP API? 是否可以使用数组?

提前致谢!

2 个答案:

答案 0 :(得分:0)

构造请求,发送请求和处理响应的最简单方法是使用WSDL到PHP生成器,因为它通常会为您需要发送的每个参数生成每个类(除响应对象和操作外)类)

了解这一点,你将能够轻松地看到如何传递这些“重复”标签,因为它肯定是你必须通过的一个对象数组,

尝试应该正常工作的PackageGenerator项目,

答案 1 :(得分:0)

解决方案:

'Criterions' => array(
           'Criterion' => array(
                            array('name'=> 'VALX' , '_'=> '17' ), 
                            array('name'=> 'VALOP' , '_'=> '1' ),  
                            array('name'=> 'VALLP' , '_'=> '10' ),      
                            array('name'=> 'TMS' , '_'=> '3' )
                     ));

如果其他值(例如val,value等)不起作用,请务必使用下划线(&#39; _&#39;)。

可以节省一些人的时间和精力。