2011-11-08 4 views
0

Je dois créer une requête SOAP comme ceci:Comment ajouter des attributs XML à demander dans 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> 

Pour autant que je comprends que je dois utiliser des tableaux imbriqués, mais le problème est dans les propriétés XML. SoapVar ne semble pas exactement ce dont j'ai besoin.

Maintenant, j'ai un tel appel:

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

Comment ajouter des attributs à "propriétés"?

Merci d'avance.

Répondre

-1

J'ai essayé quelques variantes pour faire ce travail - avec des tableaux imbriqués, et stdClass et SoapVar enconded les tableaux et les combinaisons, etc. Mais la seule variante que j'ai trouvé à travailler est bien 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); 

Je pense que cela devrait fonctionner avec array pour les propriétés aussi. J'espère que ce sera utile pour quelqu'un d'autre.

+0

Solutine hackish avec XSD_ANYXML ... –

Questions connexes