Как сделать запрос SoapClient (), включая - PullRequest
0 голосов
/ 07 марта 2019

Мне нужно сделать запрос 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);
    }
}

Спасибо!

...