Bon finalement j'ai été bidouiller le fichier "soapClient.c" généré par gSOAP.
J'ai réussi à enregistrer ma requête SOAP dans un fichier texte mais je n'arrive pas à utilser cette capture.
J'avais essayer de suivre la documentation de gSOAP pour capturer la requête mais ça n'avait pas marché mais j'y suis arrivé en bidouillant. J'ai copié le code qui crée et envoie la requête mais je précise, avant l'envoi, que la sortie se fait dans un fichier:
1 2 3 4 5 6 7
|
soap_begin(soap);
soap_serializeheader(soap);
soap_serialize_ns2__getListDevices(soap, &soap_tmp_ns2__getListDevices);
soap->sendfd = open("xml", O_RDWR | O_CREAT, NULL);
soap_put_ns2__getListDevices(soap, &soap_tmp_ns2__getListDevices, "ns2:getListDevices", "");
soap_end(soap); |
Le code xml généré:
1 2 3 4 5
| <ns2:getListDevices>
<type>urn:schemas-upnp-org:device:Basic:1</type>
<description>camera</description>
<updateList>true</updateList>
</ns2:getListDevices> |
La même chose se passe donc pour deserialiser le fichier xml que j'ai produit mais cette fois je bloque. En fait le problème est que je n'arrive pas à "naviguer" dans mon fichier xml.
Si j'avais ce fichier xml:
J'arriverai à capturer le string Hello.
Là, je n'arrive pas à passer la balise "<ns2:getListDevices>".
Quelqu'un sait-il deserialiser un fichier xml en utilisant gSOAP?
Y'a-t-il des experts gSOAP ici?
Autre question: avec la commande open
open("xml", O_RDWR | O_CREAT, NULL);
dans la doc il est écrit
open(host, O_RDWR | O_CREAT, S_IWUSR | S_IRUSR)
Or, quand je laisse "S_IWUSR | S_IRUSR" il m'indique que ces flags ne sont pas déclarés.
Quelqu'un sait-il à quoi sert ces flags? Existe-il une liste?
De meme pour "O_RDWR | O_CREAT"?
Partager