首页 > 解决方案 > 使用 PHP SoapClient 将多个值发送到同一个字段

问题描述

我必须用 SoapClient 发送这个 XML:

<xml>
  <field>
    <subfield1>value</subfield1>
    <subfield2>value</subfield2>
  </field>
  <field>
    <subfield1>value</subfield1>
    <subfield2>value</subfield2>
  </field>
</xml>

所以我创建了这个 PHP 数组:

$params = [
  'field' => [
    ['subfield1' => 'value', 'subfield2' => 'value']
    ['subfield1' => 'value', 'subfield2' => 'value']
  ]
]

// ...
$client = new SoapClient($wsdl, $config);
$client->method($params);

但我不明白为什么会出现以下错误:

SOAP-ERROR: Encoding: object has no 'subfield1' property

有关信息,WSDL 包含以下内容:

<xs:sequence>
<xs:element name="field" type="tns:field" minOccurs="0" />
</xs:sequence>

<xs:complexType name="field">
<xs:sequence>
<xs:element name="subfield1" type="xs:string" />
<xs:element name="subfield2" type="xs:string" />
</xs:sequence>
</xs:complexType>

我已经检查了问题SoapClient: how to pass multiple elements with same name? 但这对我没有帮助。

标签: phpsoapsoap-client

解决方案


推荐阅读