Я использую 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());
Как я могу предотвратить усечение подэлементов?