Как добавить атрибуты к элементам при запросе через SoapClient - PullRequest
0 голосов
/ 05 августа 2020

Мне нужно сделать вызов SOAP, и запрос должен выглядеть так:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="xxxxxx">
   <soapenv:Header/>
   <soapenv:Body>
      <soap:getOptions>
         <arg0 username="?" password="?">
            <getOptionsBusinessData/>
         </arg0>
      </soap:getOptions>
   </soapenv:Body>
</soapenv:Envelope>

Возможно ли это с PHP SoapClient?

Пробовал много всего, что привело к исключению java нулевой точки. Теперь я пробую

    $xml_string = '<getOptions>
    <arg0 username="xxxx" password="xxxx">
    <getOptionsBusinessData/>
    </arg0>
    </getOptions>';

    $client = new \SoapClient('https://example.com?wsdl');

    $args = array(new \SoapVar($xml_string, XSD_ANYXML));
    $res  = $client->__soapCall('getOptions', $args);
    return $res;

Получена другая ошибка SoapFault Cannot find dispatch method for {}getOptions. Я застрял! Как мне отклеиться?

1 Ответ

0 голосов
/ 05 августа 2020

Не передавайте строку xml в качестве параметра. SoapClient должен сгенерировать для вас XML. Попробуйте следующий звонок:

$client = new \SoapClient('https://example.com?wsdl');
$res = $client->getOptions(array('username' => 'xxx', 'password' => 'xxx'));
return $res;
...