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

ASP.NET Discussion :

Consommer un webservice qui renvoie un complexType


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Par défaut Consommer un webservice qui renvoie un complexType
    Bonjour,

    Je recherche la méthode permettant de consommer un webservice renvoyant un complexType.

    J'ai installé Microsoft SOAP Toolkit Version 3, je sais récupérer la réponse d'un webservice dans une variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim soap, reponse
     
    Set soap = Server.CreateObject("MSSOAP.SOAPClient30")
    soap.ClientProperty("ServerHTTPRequest") = True
    Call soap.mssoapinit( "http://localhost/leWebservice" )
    soap.ConnectorProperty("AuthUser") = "user"
    soap.ConnectorProperty("AuthPassword") = "login"
     
    Set reponse = soap.maFonction( parametre1, parametre2 )
    Mais je ne sais pas comment traiter ma variable.

    Serait-il possible à partir du fichier wsdl de créer un objet (en faisant une dll par ex) qui serait appelé comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set monObjet = Server.CreateObject("MonObjet")
    Set monObjet.complexType = soap.maFonction( parametre1, parametre2 )
    Merci d'avance, je sèche total !

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Un service web propose en général d'utiliser les méthodes des formulaires. Pourquoi obligatoirement utiliser SAOP?

    Serait-il possible à partir du fichier wsdl de créer un objet (en faisant une dll par ex) qui serait appelé comme suit :
    C'est tout à fait possible et très simple avec Visual Studio. Il suffit de référencer ton service web et de développer une classe COM. C'est juste deux cases à cocher.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Par défaut Problème de manipulation de xml
    Merci pour cette réponse.

    Au final, j'ai opté pour une autre solution, je récupère mes réponses au format xml.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Set noeuds = soap.maFonction( parametre1, parametre2 )
    Set xml = creerXML( noeuds )
     
    Private Function creerXML( noeuds )
     
    	Dim xml, tmp, noeud
    	Set xml = Server.CreateObject("MSXML2.DOMDocument")
    	tmp = "<reponse>"
    	For Each noeud In noeuds
    		tmp = tmp & noeud.xml
    	Next
    	tmp = tmp & "</reponse>"
    	xml.LoadXml tmp
     
        Set creerXML = xml
     
    End Function
    Du coup j'ai un petit souci pour un de mes traitements xml :

    En gros j'ai un xml1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xml1>
    <champA />
    <champB>valeur B</champB>
    <champC>valeur C</champC>
    </xml1>
    et un xml2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xml2>
    <parametreA>toto</parametreA>
    <parametreB>tata</parametreB>
    <parametreC>titi</parametreC>
    </xml2>
    et j'aimerai obtenir le xml suivant en ajoutant dans le noeud champA le contenu du xml2, élément xml2 exclus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xml1>
    <champA>
    <parametreA>toto</parametreA>
    <parametreB>tata</parametreB>
    <parametreC>titi</parametreC>
    </champA>
    <champB>valeur B</champB>
    <champC>valeur C</champC>
    </xml1>
    Quelqu'un saurait comment faire cela, j'ai essayé avec des replacechild, des appendchild, etc. sans succès, l'appendChild me permettant d'ajouter l'intégralité du xml2, balise xml2 inclus ?

    PS : j'ai testé la génération de class par curiosité, je sais ajouter une référence web dans un projet de bibliothèque de class, mais comment générer la class ?

  4. #4
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Salut,

    Un service web propose en général d'utiliser les méthodes des formulaires. Pourquoi obligatoirement utiliser SAOP?

    C'est tout à fait possible et très simple avec Visual Studio. Il suffit de référencer ton service web et de développer une classe COM. C'est juste deux cases à cocher.

    A+
    Bonjour,

    Je n'ai pas trouvé la deuxième case !

    Je fais Nouveau projet - Bibliothèque de classes puis Projet - Ajouter une référence de service. Donc j'ai bien une classe vide et ma référence mais je ne trouve pas la manipulation pour générer une classe me permettant de manipuler les objets décrits dans le wsdl.

    Le but est vraiment de consommer du webservice en asp classique et d'utiliser un objet appelé par Server.CreateObject("") afin d'utiliser des objets en paramètres d'envoi ou en réponse pour mes webservices.

  5. #5
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Je te confirme que c'est possible, je l'ai fait.

    Ajouter une reference à un service web te permet de générer de classes pour servir de passerelle.
    Il te suffit donc de faire appel à cette classe.

    Regarde la solution que je joins. Il s'agit d'un convertisseur de monnaie. Notement dans les propriétés du projet:
    1. onglet Application > Assembly information > Make assembly com visible
    2. onglet Build > Register for com interop
    3. onglet build event > post build event command line => enregistrement dans le GAC
    4. onblet signing => enregistrement dans le GAC


    A+
    Fichiers attachés Fichiers attachés
    "Winter is coming" (ma nouvelle page d'accueil)

  6. #6
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Par défaut
    Je suis désolé, j'ai l'impression de faire mon gros lourd, mais j'utilise Microsoft Visual Basic 2008 Express Edition pour me former à vb.net et cette version n'arrive pas à convertir ton projet.

    J'ai bien trouvé l'info "Rendre l'assembly visible par COM" mais le reste walou...

  7. #7
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Par défaut
    J'ai essayé en ajoutant une référence web plutôt qu'une référence de service et là ça me crée 2 dll, maDLL.dll et maDLL.XmlSerializers.dll.

    Quand je tente de les enregistrer, j'ai le message suivant : maDLL.dll a été chargé mais le point d'entrée DLLRegisterServer est introuvable. Ce fichier ne peut pas être enregistré.

  8. #8
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Ok, ben j'ai pas Visual Studio Express.

    Puisque tu programmes en .net je transfer dans le forum en question. Cela ne concerne plus trop l'ASP tout court.

    Ils auront peut-être une idée.

    Sinon, il reste l'option de tout faire en .Net et de faire une requete http sur une page aspx qui se chargera de faire le traitement des données.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. Consommation d'un WebService qui retourne un DomDocument
    Par DeveloppeurWeb dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 17/07/2014, 12h47
  2. Réponses: 1
    Dernier message: 10/01/2012, 09h46
  3. Réponses: 3
    Dernier message: 06/08/2009, 11h54
  4. [AXIS]WebService qui renvoie un objet
    Par xanax dans le forum Services Web
    Réponses: 1
    Dernier message: 13/12/2006, 15h28
  5. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13

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