Странная ситуация с использованием SoapClient
У меня есть следующий код для запуска простого soap запроса.
$client = new \SoapClient($this->wsdlURI, [
'trace' => 1,
'cache_wsdl' => WSDL_CACHE_NONE,
'soap_version' => 'SOAP_1_2',
'features' => SOAP_SINGLE_ELEMENT_ARRAYS|SOAP_USE_XSI_ARRAY_TYPE
]);
$request = [
'dataRequest' => [
'UserId' => '***',
'AccountNumber' => (string) $customer->getAccountNumber(),
'PremiseAddress' => [
'ZipCode' => (string) $customer->getZip()
]
]
];
try {
$return = $client->searchAccounts($request);
} catch (\SoapFault $fault) {
...
}
Я ожидаю, что запрос будет выглядеть следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://com/dom/ec/services" xmlns:java="java:com.dom.ec.beans">
<soapenv:Header/>
<soapenv:Body>
<ser:searchAccounts>
<ser:dataRequest>
<java:UserId>***</java:UserId>
<java:AccountNumber>00000000</java:AccountNumber>
<java:PremiseAddress>
<java:ZipCode>00000</java:ZipCode>
</java:PremiseAddress>
</ser:dataRequest>
</ser:searchAccounts>
</soapenv:Body>
</soapenv:Envelope>
Вместо этого или отформатирован так:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://cso.dom.com/ecservices/">
<SOAP-ENV:Body>
<ns1:SearchAccounts>
<ns1:dataRequest>
<item>
<key>UserId</key>
<value>***</value>
</item>
<item>
<key>AccountNumber</key>
<value>0000000000</value>
</item>
<item>
<key>PremiseAddress</key>
<value>
<item>
<key>ZipCode</key>
<value>00000</value>
</item>
</value>
</item>
</ns1:dataRequest>
</ns1:SearchAccounts>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Есть ли опция, которую я пропускаю?