RSS

Archives de Catégorie: moodlews

je dormirais moins con ce soir

Depuis des mois que je fait de la pub pour l’outil open source SOAPUI pour tester les services Web dont le mien pour Moodle je restais bloqué sur un problème con : « Comment envoyer au serveur depuis SOAPUI des données en entrée qui doivent être sous la forme d’un tableau de chaînes de caractères ? » ; alors que la plupart de mes opérations attendent justement un tel tableau en entrée !

Ma réponse était : Laissez le tableau vide, vous aurez toutes les réponses pour tout le site, puis écrivez un petit script python pour le tester avec une seule valeur, ou utilisez mon script wsdl2php.php pour générer des scripts php de tests, vous verrez ca marche…

Ce brave SOAPUI me prépare bien la requête, par exemple celle-ci qui renvoie les sections d’un cours :

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://cipcnet.insa-lyon.fr/moodle/wspp/wsdl" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
   <soapenv:Header/>
   <soapenv:Body>
      <wsdl:get_sections soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <client xsi:type="xsd:integer">?</client>
         <sesskey xsi:type="xsd:string">?</sesskey>
         <courseids xsi:type="wsdl:getCoursesInput" soapenc:arrayType="xsd:string&#91;&#93;"></courseids>
         <idfield xsi:type="xsd:string">?</idfield>
      </wsdl:get_sections>
   </soapenv:Body>
</soapenv:Envelope>

Remplir les paramètres simples ( client, session et idfield), facile…

mais que lui mettre dans sa balise XML courseids ?

<courseids xsi:type="wsdl:getCoursesInput" soapenc:arrayType="xsd:string&#91;&#93;"></courseids>

J’ai tout essayé, des crochets, des accolades … rien , niet, nada !

Sur ce coup la, Google n’a pas été mon ami… toutes les pages parlant de SOAPUI donnent des exemples avec des données simples en entrée (chaînes, entier, réels…) mais jamais des tableaux…

Après moult tâtonnements, scripts de test en php ou en python pour voir l’XML envoyé et reçu, j’ai fini par trouver et je n’en suis pas faché, d’ou le titre de ce billet 😉

Il faut lui glisser dans le crochet vide la dimension du tableau (1,2…) et dans la balise vide autant de balises item que d’éléments du tableau, sans oublier de lui rappeler le type de l’élement, ici xsd:string

soit pour un tableau contenant une valeur :

<courseids xsi:type="wsdl:getCoursesInput" soapenc:arrayType="xsd:string&#91;1&#93;">
<item xsi:type="xsd:string">38</item>
</courseids>

et pour un tableau de deux valeurs :

<courseids xsi:type="wsdl:getCoursesInput" soapenc:arrayType="xsd:string&#91;2&#93;">
  <item xsi:type="xsd:string">38</item>
  <item xsi:type="xsd:string">116</item>
</courseids>

Non mais, j’ai passé l’âge de me laisser emmerder par une babasse.

 
Poster un commentaire

Publié par le mercredi 28 janvier 2009 dans coups de gueule, moodlews