Мне нужно сделать запрос Soap из проекта WSDL, и мне нужно отправить <soapenv:envelope>
в запросе.Я не нашел ни одного поста, который объясняет, как это сделать.Мой друг использовал приведенный ниже код, поэтому я попробовал его, но у меня не получилось.Кто-нибудь знает, как я могу отправить <soapenv:envelope>
в SoapClient ?
Любая помощь будет высоко ценится
$wsdl_url = 'http:/endpoint/to/wsdl/project?wsdl';
$credentials = [
'login' => 'login',
'password' => 'password',
'trace' => true,
];
$client = new SoapClient_WorkAround($wsdl_url, $credentials);
воткласс, который я расширил с SoapClient
class SoapClient_WorkAround extends \SoapClient
{
public function __doRequest($request, $location, $action, $version, $one_way=0)
{
$request = '<soapenv:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wss="http://www.adonix.com/WSS">
<soapenv:Header/>
<soapenv:Body>
<wss:run soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<callContext xsi:type="wss:CAdxCallContext">
<codeLang xsi:type="xsd:string">codeLang</codeLang>
<poolAlias xsi:type="xsd:string">poolAlias</poolAlias>
<poolId xsi:type="xsd:string">poolId</poolId>
<requestConfig xsi:type="xsd:string">adxwss.beautify=true</requestConfig>
</callContext>
<publicName xsi:type="xsd:string">publicName</publicName>
<inputXml xsi:type="xsd:string">
<![CDATA[<?xml version="1.0" encoding="utf-8" ?>
<PARAM>
<FLD NAME="P_LOGIN">login</FLD>
</PARAM>
]]>
</inputXml>
</wss:run>
</soapenv:Body>
</soapenv:Envelope>';
return parent::__doRequest($request, $location, $action, $version, $one_way);
}
}
Спасибо!