IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[gSOAP] Créer une requete soap


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 61
    Points : 37
    Points
    37
    Par défaut [gSOAP] Créer une requete soap
    Bonjour tout le monde,

    J'ai actuellement un service web qui fonctionne très bien et qui a été compilé à l'aide de gsoap.
    J'ai un programme client en C qui marche lui aussi très bien avec mon service web.
    J'arrive à voir toutes les requêtes SOAP envoyées par mon client à l'aide de wireshark.

    Maintenant, j'aimerai pouvoir transmettre ces requêtes SOAP via le protocole SIP mais je n'arrive pas à juste créer les requêtes afin de les encapsuler dans un message SIP.

    Quelqu'un a-t-il déjà fait cela?
    Quelqu'un peut-il m'aider?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    Bon je crois que j'ai pas été très clair dans mon explication.
    En fait je voudrais générer du code XML à partir d'un programme en C.
    Je sais qu'un parser XML décrypte du XML. Mais peut-il en générer?

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Pour générer du XML, tu peux utiliser par exemple sprintf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char buffer[1024];
    sprintf(buffer,
          "<root>"
             "<elt>"
                "valeur"
             "</elt>"
          "</root>");
    le buffer contiendra une chaine de caractères qui est du XML
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <root>
       <elt>
          valeur
       </elt>
    </root>

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    Je sais pas si c'est une bonne idée, mais j'ai décidé d'utiliser l'API libxml et pour l'instant, je m'en sors bien.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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é:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open("xml", O_RDWR | O_CREAT, NULL);
    dans la doc il est écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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"?

  6. #6
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 265
    Points : 6 686
    Points
    6 686
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par therealmancool Voir le message
    Quelqu'un sait-il deserialiser un fichier xml en utilisant gSOAP?
    Je ne penses pas que quelque chose ait été fait pour cela, j'ai bien peur que tu doive soit le faire "à la main", soit implémenter ton propre compilo (xml->wsdl)

    L'autre question je ne sais pas non plus. Je suis loin d'être expert gSoap, j'ai implémenté quelques serveurs simples, et j'en ai fais un tuto tout aussi simple, c'est tout. Et sincèrement, j'ai vu passer tes posts sur la mail list de gSoap, et si tu n'as pas eu de réponses là-bas, il y a vraiment très peu de chances que tu en aies ici

    Mais bon, tu as raison de tenter. J'ai un peu de temps cet après-midi, je vais chercher un peu. Si je trouve quelque chose, je te ferai signe.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    Merci

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    Bon je viens de trouver:
    Le problème vient du code xml que j'ai généré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <ns2:getListDevices>
        <type>urn:schemas-upnp-org:device:Basic:1</type>
        <description>camera</description>
        <updateList>true</updateList>
    </ns2:getListDevices>
    Dans la balise "<ns2:getListDevices>", ce sont les ":" qui posent problème.
    1 semaine bloquée pour ça

Discussions similaires

  1. [VB6]créer une requete pour chercher une partie d'un mot
    Par aibar dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/06/2006, 21h38
  2. [CR11] comment créer une requete manuelle ?
    Par c_moi_c_moi dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 14/05/2006, 22h35
  3. [PHP] envoi d'une requete SOAP
    Par orzabal dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 20/03/2006, 14h52
  4. Comment créer une requete
    Par Raphael39 dans le forum Access
    Réponses: 21
    Dernier message: 08/01/2006, 19h36
  5. Comment effacer et créer une requete Access ??
    Par Mustard007 dans le forum Bases de données
    Réponses: 1
    Dernier message: 01/11/2005, 23h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo