带有 PHP Soap 客户端的多维数组

Multidimensional Array with PHP Soap Client

我正在尝试创建一个 SOAP 客户端,但我需要按照文档中的要求发送一个多维数组(我认为),示例如下:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.senior.com.br">
  <soapenv:Body>
    <ser:ColaboradoresAdmitidos>
      <user>String</user>
      <password>String</password>
      <encryption>Integer</encryption>
      <parameters>
        <NumEmp>Integer</NumEmp>
        <AbrTipCol>String</AbrTipCol>
        <IniPer>DateTime</IniPer>
        <FimPer>DateTime</FimPer>
      </parameters>
    </ser:ColaboradoresAdmitidos>
  </soapenv:Body>
</soapenv:Envelope>

我创建了这样一个数组:

$arguments = [
    'user' => 'xxxxx',
    'password' => 'xxxxxxxxxx',
    'encryption' => 0,
    'parameters' => array(
        'NumEmp' => 1, 
        'AbrTipCol' => '1', 
        'IniPer' => '01/01/2019', 
        'FimPer' => null
    ),
];

$client = new SoapClient($url, array('trace' => 1));
dd($arguments, $client->__soapCall("colaboradoresAdmitidos", $arguments), $client->__getLastRequest());

但是在请求中,好像不接受数组,其实我做了一些测试,除了前3个参数,但是none输入生成的XML .

我已经用不同的方式制作了数组,并更改了参数值,但它总是 returns 如下:

<?xml version="1.0" encoding="UTF-8"?>\n
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://services.senior.com.br">
    <SOAP-ENV:Body> 
        <ns1:ColaboradoresAdmitidos>
            <user>xxxxxxx</user>
            <password>xxxxxxxxx</password>
            <encryption>0</encryption>
            <parameters/>
        </ns1:ColaboradoresAdmitidos>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

有人可以帮助我,因为服务器知道参数丢失,所以我无法执行查询。

上网查了一下,发现有很多人有这个问题,但都解决不了。我发现了错误。 当参数与 WSDL 中注册的参数不匹配时,就会发生这种情况。就我而言:文档提到参数时使用大写字母,但是,我不得不使用小写字母。

看来参数key必须和wsdl中注册的一样。 例如:

$arguments = [
'user' => 'xxxxx',
'password' => 'xxxxxxxxxx',
'encryption' => 0,
'parameters' => array(
    'numEmp' => 1, 
    'abrTipCol' => '1', 
    'iniPer' => '01/01/2019', 
    'fimPer' => null
)];