Почему мыльный клиент отсекает субэлементы? - PullRequest
1 голос
/ 13 мая 2019

Я использую PHP SoapClient для отправки запроса. Структура XML должна выглядеть следующим образом:

<tar:setPackage>
    <tar:Package>
        <tar:Content>
            <tar:Object xsi:type="par:Car">
                <par:Descritpion>1</par:Descritpion>
                <par:Color>Blue</par:Color>
            </tar:Object>
        </tar:Content>
        <pev:Supplier>
            <pev:Id>04</pev:Id>
        </pev:Supplier>
    </tar:Package>
</tar:setPackage>

Но, к сожалению, результат вывода __getLastRequest() выглядит так:

<tar:setPackage>
    <tar:Package>
        <tar:Content>
            <tar:Object xsi:type="par:Car"/>
        </tar:Content>
        <pev:Supplier>
            <pev:Id>04</pev:Id>
        </pev:Supplier>
    </tar:Package>
</tar:setPackage>

Как видите, субэлементы обрезаны. Он должен быть связан с xsi-типом "par: Car", потому что при его изменении подэлементы не будут усечены.

Согласно ссылочному файлу WSDL, «Автомобиль» происходит от «Объекта».

Вот как я использую PHP Soap Client:

$parm = array();
$parm2 = array();
$parm2[] = new SoapVar("1", XSD_STRING, null, null, "Description", "http://dummy-url.com/car");
$parm[] = new SoapVar($parm2, SOAP_ENC_OBJECT, "Car", "http://dummy-url.com/car", "Object", "http://dummy-url.com/objectdata");
$response = $client->setPackage(new SoapVar($parm, SOAP_ENC_OBJECT));
print_r($client->__getLastRequest());

Как я могу предотвратить усечение подэлементов?

...