04 février 2013
publié par 
Les versions 18 de WINDEV, WEBDEV et WINDEV Mobile permettent la consommation d'un Webservice importé qui utilise en résultat ou en paramètre un type tableau SOAPArray (nouveauté 86).

Attention à la déclaration des variables pour utiliser ce type, car naturellement on pense à déclarer un tableau de la façon suivante :

xParamètre est un tableau de soaptestitemArray
WebService.FonctionSoap(xParamètre)

Un tel appel provoque irrémédiablement le retour du mécanisme de sécurité du WLangage :
"soaptestitemArray n'est pas un élément indicé"

En effet, le type SOAPArray est lui-même structuré, c'est un de ses membres qui est un tableau incluant réellement les données. Ainsi la déclaration du paramètre se fait sans indiquer qu'il s'agit d'un tableau, c'est le chargement du paramètre qui permettra d'ajouter les éléments dans le tableau SOAPArray :

xParam est un soaptestitemArray
xParam.soaptestitem[1].nom = "nom 1er élément"
xParam.soaptestitem[1].prenom = "prénom 1er él"ment"
xParam.soaptestitem[2]. nom = "nom 2ième élément"
xParam.soaptestitem[2]. prenom = "prénom 2ième élément"
WebService.FonctionSoap(xParamètre)

Autre syntaxe possible en passant par une variable intermédiaire et la commande Ajoute des tableaux :

xParam est un soaptestitemArray
UnElement est un soaptestitem
UnElement. nom = "nom 1er élément"
UnElement. prenom = "prénom 1er él"ment"
ajoute(xParam.soaptestitem,UnElement)

UnElement. nom = "nom 2ième élément"
UnElement. prenom = "prénom 2ième élément"
Ajoute(xParam.soaptestitem,UnElement)


Astuce : pensez à utiliser l'Explorateur de projet qui montre dans les types d'un webservice importé à partir d'un WSDL, les différences arborescences. Cela facilite toujours la compréhension des éventuelles imbrications de type.

< Retour