¿Cómo agregar atributos XML para solicitar en SOAP?

Necesito crear una solicitud SOAP como esta:

<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>

Por lo que tengo entendido, necesito usar matrices anidadas, pero el problema está en las propiedades XML. SoapVar parece no ser exactamente lo que necesito.

Ahora tengo una llamada así:

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

¿Cómo agregar atributos a las "propiedades"?

Gracias de antemano.

preguntado el 08 de noviembre de 11 a las 09:11

1 Respuestas

Probé algunas variantes para que esto funcione, con matrices anidadas y matrices y combinaciones codificadas stdClass y SoapVar, etc. Pero la única variante que encontré que funciona correctamente es que:

 $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 );

Creo que también debería funcionar con la matriz para las propiedades. Espero que esto sea útil para otra persona.

respondido 09 nov., 11:16

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.