PHP SoapClient - _SoapCall, чтобы обернуть параметры внутри имени метода - PullRequest
0 голосов
/ 18 октября 2018

У меня есть следующий мыльный веб-сервис:

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <Customer_Get xmlns="http://example.com/">
       <token>string</token>
       <customerId>string</customerId>
     </Customer_Get>
   </soap:Body>
</soap:Envelope>

Следующий вызов не работает:

$soap = new SoapClient('link/to/.wsdl');
$result = $soap->__soapCall('Customer_Get', ['token' => 'asdad', 'customerId' => 1]);

Однако, когда я оборачиваю массив параметров внутри массива с именем методатогда это работает:

$soap = new SoapClient('link/to/.wsdl');
$result = $soap->__soapCall('Customer_Get', ['Customer_Get' => ['token' => 'asdad', 'customerId' => 1]]); 

Зачем мне оборачивать параметры внутри имени метода?

1 Ответ

0 голосов
/ 18 октября 2018

Поскольку этот вызов

$result = $soap->__soapCall('Customer_Get', ['Customer_Get' => ['token' => 'asdad', 'customerId' => 1]]);

является сокращением для этого вызова (с «параметрами») здесь:

$result = $soap->__soapCall('Customer_Get', ['parameters' => ['Customer_Get' => ['token' => 'asdad', 'customerId' => 1]]]);
...