Мне нужен этот XML в:
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:ns1="https://server/">
<soapenv:Header>
<authenticate>111111111111</authenticate>
<SOAP-ENV:Header/>
Мой PHP-код:
$head = new stdClass();
$head->authenticate='1111111111111111';
$header = new SoapHeader('ns1','authenticate',$head,false);
$client = new SoapClient ('https://server',array("trace" => 1, "exceptions" => 1));
$client->__setSoapHeaders($header);
Я получаю этот XML:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:ns1="https://server"xmlns:ns2="https://server">
<SOAP-ENV:Header>
<ns2:authenticate>
<authenticate><BOGUS>anc401t9n4dknmgp2bv629ori7</BOGUS>
</authenticate></ns2:authenticate>
</SOAP-ENV:Header
><SOAP-ENV:Body>...
Как я могу получить необходимый XML? Можно ли полностью переписать soapheader с помощью php клиента SoapClient? Или как я могу добавить одну строку без создания нового пространства имен?
Если ваш веб-сервис хорошо документирован в WSDL, попробуйте использовать wsdltophp.com или же PackageGenerator поскольку он генерирует методы для правильной установки SoapHeader очень легко и так для всего запроса.
Других решений пока нет …