J'ai deux fichiers WSDL et j'ai utilisé gSOAP pour créer du code C++.gSOAP - En-tête SOAP-Action non défini
Pour générer le code, les commandes suivantes ont été utilisées:
\path\to\wsdl2h -I \path\to\import\dir -j -N Service1Prefix -n Namespace1Prefix -o \path\to\output\header\dir\header1.h -q CPPNamespace1 -t \path\to\typemap.dat .\path\to\wsdl1.wsdl
Et ainsi de suite pour les fichiers WSDL restants. Dans la documentation gsoap, j'ai lu qu'un fichier env.h vide serait nécessaire pour gérer la sérialisation et la gestion des erreurs. J'ai donc créé un fichier vide pour cela.
Après cela, je généré le code C++ pour chacun des fichiers WSDL avec l'outil soap2cpp:
\path\to\soap2cpp -1 -C -L -a -A -b -d \path\to\output\dir -i -j -I \path\to\import\dir -n -r -w -x \path\to\header\dir\header1.h
Et le env.h
\path\to\soap2cpp -1 -C -L -b -d \path\to\output\dir -j -I \path\to\import\dir -penv -r -w -x \path\to\env.h
Tout a fonctionné et j'obtenu le code C++.
Je l'ai mis dans mon code et essayé une méthode, mais une erreur est survenue.
Error: WSWS3147E: Error: no SOAPAction header!
J'ai essayé un peu de jongler avec les paramètres de wsdl2h et soap2cpp, mais ne sont pas venus à un résultat satisfaisant. Lorsque je supprime le paramètre pour les préfixes, l'en-tête SOAPAction a été défini, mais j'obtiens des problèmes lorsque la réponse contient des objets avec le même nom mais un contenu différent.
Certaines recherches n'ont pas mis en place une solution de travail pour moi. Est-ce que quelqu'un d'entre vous pourrait avoir déjà fait face à ce problème et pourrait vous aider?
Chaque méthode de chaque WSDL contient un attribut soapAction. – MBU
La version 2.8.47 de gSOAP a été utilisée. Je vais essayer 2.8.49. La combinaison de tous les fichiers WSDL en un gros fichier d'en-tête nous a posé problème. Imaginez une position. Dans un WSDL, une position contient l'adresse municipale, la ville et ainsi de suite. dans un second document WSDL a Position contient la latitude, la longitude et l'horodatage d'un objet en mouvement. wsdl2h conserve uniquement la première occurrence de cet objet de position. – MBU
Vous dites que vos WSDL n'ont pas d'espace de noms unique, ce qui entraîne des conflits de noms? C'est un très mauvais design. Voilà ce que sont les espaces de noms. Heureux d'entendre qu'il existe un moyen de contourner cela. –