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

WinDev Discussion :

Récupérer chaine XML via un Web service [WD19]


Sujet :

WinDev

  1. #1
    Membre actif
    Homme Profil pro
    Développeur WEB - Admin Réseaux
    Inscrit en
    Décembre 2004
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur WEB - Admin Réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 153
    Points : 286
    Points
    286
    Par défaut Récupérer chaine XML via un Web service
    Bonjour,
    J'ai généré un WebService qui doit recevoir du contenu en XML et je dois par la suite traité ce contenu XML.

    Donc j'ai créé une procédure qui reçoit en entrée le contenu du champ HTML de mon web Service.

    Or j'ai un souci car quand je renseigne ce champ avec du contenu XML il n'y a rien en entrée dans ma procédure, par contre si je mets juste une phrase je récupère bien cette phrase dans ma procédure.

    Dans ma déclaration, je déclare ma procédure avec une chaine en entrée puis après je dit que cette chaine est un XMLDocument et je traite mon XML pour récupérer les valeurs des balises.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Procedure Xmltoto(sSourceXML est une chaîne)
    LOCAL
     
    xDocRecu est un XMLDocument//, description = "dosi_send_temotpartner"
     
    sChemin = fRepExe() + "\xml"
    fRepCrée(sChemin)
    sCheminFichierRecu = sChemin + "\" + DateDuJour() + "_" + HeureSys() + "_Recu.txt"
     
    SI fSauveTexte(sCheminFichierRecu,sSourceXML) ALORS
    xDocRecu = XMLOuvre(sCheminFichierRecu,depuisFichier)
    ....

    Est ce que vous sauriez comment je peux récupérer le code XML passé en entrée dans mon Webservice?
    Je pense que cela doit venir de ma déclaration de ma procédure, mais je sais pas en quoi déclaré ce que je récupère de mon webservice.


    en complément lorsque je passe les chaines suivantes dans mon webservice:

    aaaaaaa -> je récupère bien la chaine aaaaaaa
    <toto></toto> -> je récupère une chaine vide
    <toto> aaaaa </toto> -> je récupère une chaine vide
    aaaaaa <toto> </toto> -> je récupère la chaine aaaaaa
    Et quand je passe ma chaine XML avec plusieurs balises mère et fille, je récupère une chaine vide.

    C'est comme si dés qu'il voit des balises XML, tout ce qu'il y a l'intérieur y compris les balises était effacé.
    J'ai essayé de récupérer un XMLdocument en paramètre de ma procédure mais c'est pareil.
    Je ne comprend vraiment pas pourquoi lorsqu'il y a du XML dans le champ de mon webservice, il est effacé.


    Merci par avance

    Franck

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Une question : comment appelles tu ta procédure ?

    Une autre : as-tu mis un info(sSourceXML) quelque part dans ta procédure ?
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Membre actif
    Homme Profil pro
    Développeur WEB - Admin Réseaux
    Inscrit en
    Décembre 2004
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur WEB - Admin Réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 153
    Points : 286
    Points
    286
    Par défaut
    Bonjour,

    mon application contient juste une procédure liée à un web service.
    Ce WebService est installé sur un serveur, et pour le tester je passe par mon navigateur.

    Nom : Capture.JPG
Affichages : 1636
Taille : 30,3 Ko

    Je renseigne ma chaîne XML dans le champ et je clique sur le bouton Test. A ce moment là ma procédure se lance sur le serveur et doit écrire le contenu de ce qu'elle récupère dans un fichier texte. De plus elle doit renvoyer un résultat.

    Pour la fonction info(), non je ne l'ai pas utilisée car comme je passe par un navigateur et que mon appli est installer sur un serveur distant je ne verrais rien s'afficher.
    Je peux t'envoyer l'URL par MP si tu le souhaites pour voir à quoi ça ressemble.

    merci d'avance

    Franck

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Bonjour,

    Autre question : comment appelles-tu le webservice ?
    Si c'est par les fonctions SOAP, tu as la fonction SOAPDonneRésultat(..) qui te permet de récupérer le retour.

  5. #5
    Membre actif
    Homme Profil pro
    Développeur WEB - Admin Réseaux
    Inscrit en
    Décembre 2004
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur WEB - Admin Réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 153
    Points : 286
    Points
    286
    Par défaut
    Bonjour,

    je n'appelle pas le Webservice, il est en attente de données et lorsqu'on lui envoie une chaine XML il doit la lire et renvoyer une nouvelle chaine XML complété. En fait il fait office de serveur.

    Je peux lui passer une chaine via l'URL, voir mon poste précédent.
    Ou via du SOAP, pour tester par exemple j'utilise SOAPUI et j'envoie la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:WSDOSI">
       <soapenv:Header/>
       <soapenv:Body>
          <urn:XmlDosi>
             <sSourceXML><content><identification><request_id>7</request_id></identification></content></sSourceXML>
          </urn:XmlDosi>
       </soapenv:Body>
    </soapenv:Envelope>
    Franck

  6. #6
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Je n'avais pas vu que le problème se situait côté serveur

    Par contre plusieurs choses me gênent :
    - la procédure s'appelle Xmltoto et sur la page web de test, il s'agit de XMLdosi. Est-ce normal ?
    - Pourquoi souhaites-tu envoyer du XML, parce que visiblement, d'insérer des balises dans les balises de la requête envoyée au webservice pose problème ?

  7. #7
    Membre actif
    Homme Profil pro
    Développeur WEB - Admin Réseaux
    Inscrit en
    Décembre 2004
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur WEB - Admin Réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 153
    Points : 286
    Points
    286
    Par défaut
    Pour le nom, je l'ai renommé entre temps, désolé

    En fait pour le XML je n'ai pas trop le choix, j'explique dans les grandes lignes:

    Un de nos fournisseurs à un site WEB, sur ce site WEB il y a un lien.
    Monsieur X clique sur ce lien, alors cela lance une procédure chez mon fournisseur qui envoie des données au format XML via son WebService vers mon WebService.
    Je reçoit les données, les analyse puis je dois renvoyer un résultat au format XML vers le WebService de mon fournisseur.
    Qui lui affichera une nouvelle page sur son site Web pour Monsieur X.

    Bien sûr je n'ai pas accès à tous ce qui touche à mon fournisseur.

    Merci

    Franck

  8. #8
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    ok je comprends mieux et c'est la première étape qui pose problème, l'analyse de ce qu'envoie ton fournisseur, si je ne me trompe pas.

    Le XML t'envoie ton fournisseur est sa requête d'appel à ton webservice. Dedans, tu devrais avoir les infos qui t'intéressent mais pas sous forme xml, plutôt des chaînes, des entiers...

    J'ai un doute que l'on puisse intégrer du xml dans du xml sans altérer la requête.

    Je ne sais pas quel genre de données tu attends, mais si tu attends par exemple, le nom d'un client, son identifiant, ta procédure devrait contenir en paramètre : une chaîne pour le nom et un entier pour l'identifiant.

    As-tu un exemple de requête envoyée par le fournisseur ?

  9. #9
    Membre actif
    Homme Profil pro
    Développeur WEB - Admin Réseaux
    Inscrit en
    Décembre 2004
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur WEB - Admin Réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 153
    Points : 286
    Points
    286
    Par défaut
    J'ai pas répondu tout de suite je faisait quelques test. Et finalement j'ai trouvé la solution.
    Du coup je la post, ça pourra toujours aider

    A l'intérieur de la requête SOAP, il faut encapsuler le code XML avec les balises suivantes:
    <![CDATA[ code XML ]]>

    Ce qui donne le code suivant :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <![CDATA[
           <?xml version='1.0' encoding='UTF-8'?>
           <content>
              <identification>
                 <request_id>7</request_id>
                 <shareholder_id>1120</shareholder_id>
              </identification>
           </content>
    ]]>

    Merci quand même de votre aide et de votre temps.

    Franck

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer donnée login via un web service
    Par wal-78 dans le forum Langage
    Réponses: 3
    Dernier message: 29/07/2013, 12h22
  2. [DOM] Envoi d'un flux XML via un web service
    Par flex01 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 05/02/2009, 14h37
  3. Récupérer un bean via un web service
    Par PeterEMF dans le forum Flex
    Réponses: 3
    Dernier message: 03/06/2008, 14h13
  4. Envoi d'un fichier XML vers un Web Service
    Par Agrumes dans le forum Linux
    Réponses: 2
    Dernier message: 06/02/2008, 15h09
  5. Transmettre le resultat d une requete via un web service
    Par Mr_Welby dans le forum Services Web
    Réponses: 4
    Dernier message: 11/01/2008, 16h04

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