Как добавить атрибуты XML для запроса в SOAP? - PullRequest
0 голосов
/ 08 ноября 2011

Мне нужно создать SOAP-запрос следующим образом:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:stor="http://storage.xdoc.xx/">
   <soapenv:Header/>
   <soapenv:Body>
      <stor:createDocument>
         <parentEntryId>workspace://SpacesStore/15f33e3a-32ba-4a5d-976f-c9e2096e1112</parentEntryId>
         <name>test.txt</name>
         <properties module="" name="Content" type="Binary">
            <valueBinary>
               <bytes>cXdlcnR5</bytes>
            </valueBinary>
         </properties>
      </stor:createDocument>
   </soapenv:Body>
</soapenv:Envelope>

Насколько я понимаю, мне нужно использовать вложенные массивы, но проблема в свойствах XML. SoapVar, кажется, не совсем то, что мне нужно.

Теперь у меня есть такой звонок:

$client->__callSoap("createDocument",
                                array(new SoapParam($name, "name"),
                                        new SoapParam(
                                                new SoapParam(
                                                        new SoapParam(
                                                                $contents,
                                                                "bytes"
                                                        ),
                                                        "valueBinary"
                                                ),
                                                "properties"
                                        )
                                )
                        );  

Как добавить атрибуты в "свойства"?

Заранее спасибо.

1 Ответ

0 голосов
/ 09 ноября 2011

Я попробовал несколько вариантов, чтобы заставить это работать - с вложенными массивами, а также с массивами stdClass и SoapVar, а также с комбинациями и т. Д. Но единственный вариант, который я обнаружил для правильной работы, это:

 $parameters = new stdClass();
 $parameters->name = $name;
 $parameters->parentEntryId = $parentEntryId;
 $parameters->properties = new stdClass();
 $propsSimpleVar = new SoapVar("<properties module=\"\" name=\"Content\" type=\"Binary\"><valueBinary><bytes>" . $cleanContents . "</bytes></valueBinary></properties>", XSD_ANYXML);

 $parameters->properties = $propsSimpleVar;

 $client->createDocument( $parameters );

Я думаю, что он также должен работать с массивом для свойств. Надеюсь, что это будет полезно для кого-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...