L'ordre des paramètres dans SOAPpy

SOAPpy est une bibliothèque très pratique qui permet d'écrire un serveur ou un client SOAP très rapidement. Les exemples sont d'une simplicité déconcertante...

En ce qui me concerne, je l'utilise souvent comme librairie cliente pour me connecter à des services SOAP divers et variés. Mais aujourd'hui, mon problème est l'appel à des webservices écrit en Java avec Apache CXF. Par exemple, voilà comment appeler une fonction avec des arguments nommés :

import SOAPpy client = SOAPpy.SOAPProxy('http://host/service')client.fonction(argument1='test', argument2='test2')

Dans ce cas, côté serveur Java, j'ai null comme valeur pour argument1. Après quelques investigations, dump de trames réseaux, tests avec curl, je me rends compte que l'ordre des paramètres de ma fonction est important. Les paramètres sont nommés, mais cela ne suffit pas...

Les paramètres nommés doivent être dans le même ordre celui dans lequel ils ont été déclarés dans la classe Java. Je ne sais pas ce que dit la spécification, mais de mon point de vue, à partir du moment où les arguments sont nommés, l'ordre n'importe plus. Mais bon, je veux juste que mon script fonctionne correctement...

Il y a une solution dans SOAPpy qui est un peu cachée. Il suffit de définir l'ordre des paramètres nommés à la création du webservice :

import SOAPpy config = SOAPpy.SOAPConfig()config.argsOrdering = { 'fonction': ['argument1', 'argument2'],} client = SOAPpy.SOAPProxy('http://host/service', config=config)client.fonction(argument1='test', argument2='test2')

La différence est qu'on spécifie une configuration au proxy SOAP. Cette configuration a un attribut argsOrdering qui doit être un dictionnaire dont les clefs sont les noms des méthodes, et les valeurs, des listes ordonnées des noms des paramètres.

Et voilà ! Plus de problème : mes paramètres sont bien dans le bon ordre et avec les bons noms, et le serveur Java les récupère sans problème !

Derniers articles

Pourquoi nous utilisons Wagtail : le CMS Django qui sépare les casquettes

Une introduction à Wagtail et son Zen : comment laisser à l'éditeur·i·ce de contenu un peu de choix, mais pas trop.

Comment devenir un bureau d'enregistrement ?

Devenir bureau d'enregistrement est un parcours de la combattante au niveau technique, administratif et financier. Il y a des cas simples et d'autres qui demandent de raser un Yack.

Précisions sur le projet de bureau d'enregistrement coopératif

L'appel à intérêt lancé la semaine dernière a suscité plusieurs réactions sur les valeurs proposées : clarifions quelques points aujourd'hui.

Appel à intérêt pour un bureau d'enregistrement coopératif

Qui serait partant·e pour participer (ou être client·e) du premier registrar sous forme de société coopérative d'intérêt collectif ?