将数据发送到SOAP API,涉及重复的同名元素

时间:2016-06-11 16:11:49

标签: php xml soap

我有这种XML结构:

<create_resource_inventory xmlns="urn:toa:activity">
    <user>
        <now></now>
        <login></login>
        <company></company>
        <auth_string></auth_string>
    </user>
    <resource_id></resource_id>
    <properties>
        <name></name>
        <value></value>
    </properties>
</create_resource_inventory>

我希望属性标签重复多次。

我已尝试使用以下格式发送参数

$body = array( 
    "user" => array (
       "now" => $now,
       "login" => $login, 
       "company" => $company,
       "auth_string" => $auth_string
    ),
    "resource_id" => $params[$i][0],
    // "new_array" => array(
    "properties" => array(
        "name" => "invtype",
        "value" => $params[$i][1]
    ),
    "properties" => array(
        "name" => "item_number",
        "value" => $params[$i][2]
    ),
    "properties" => array(
        "name" => "quantity",
        // "value" => "10"
        "value" => $params[$i][3]
    ),
    "properties" => array(
        "name" => "billable",
        "value" => $params[$i][4]
    )

但是只插入一个属性值而不插入其他值

当我使用SOAP UI多次发送带有属性值的请求时,值将插入到一个请求中,但在使用php脚本执行时不起作用。

已经查看了有关堆栈溢出的各种问题,但没有人回答这种情况。

由于

1 个答案:

答案 0 :(得分:2)

您正在覆盖properties密钥:

$a = [
    'properties' => [
      'name' => 'invtype',
      'value' => 'foo'
    ],
    'properties' => [
      'name' => 'item_number',
      'value' => 'foo'
    ],
];

这将仅留下最后一个条目。

properties键的值设为数组:

$a = [
    'properties' => [
        [
          'name' => 'invtype',
          'value' => 'foo'
        ],
        [
          'name' => 'item_number',
          'value' => 'foo'
        ],
    ],
];