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

Services Web Discussion :

Retourner une valeur d'un Web Service


Sujet :

Services Web

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Points : 57
    Points
    57
    Par défaut Retourner une valeur d'un Web Service
    Bonjour, je suis débutant dans l'univers du Web Service.

    J'ai développé une appli Windows Phone, avec en référence une bibliothèque de classe CORE et un WS qui doit accéder aux données de la base qui possède également une référence de cette bibliothèque.

    Mon problème est le suivant :

    -Je n'arrive pas à faire appel à ma méthode exposée par le WS qui doit me retourner un objet de type 'Utilisateur'. La méthode que je retrouve dans l'appli Windows Phone est une procédure (dans l'interface du WS c'est une fonction) se termine par 'Async'.


    Pouvez vous m'aider ?

    Merci, bonne soirée !

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Points : 57
    Points
    57
    Par défaut
    Personne pour un petit coup de main ?

  3. #3
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Les appels aux Web Services sont asynchrones, car le temps de latence entre le moment où tu appelles une méthode, et le moment où tu reçois les résultats peut être plus ou moins long en fonction des conditions (couverture réseau, temps de réponse du serveur, temps de traitement côté serveur, etc.).

    En principe tu dois faire quelque chose comme ceci :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void Test()
    {
        // On récupère une instance du proxy
        var client = new MonWebService();
     
        // On s'abonne à l'évènement "xxxCompleted" (où xxx correspond au nom de la méthode du Web Service, ici elle s'appelle GetData)
        client.GetDataCompleted += this.client_GetDataCompleted;
     
        // On lance l'exécution asynchrone
        client.GetDataAsync();
    }
    Ensuite on va s'occuper du résultat lors de l'évènement GetDataCompleted :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void client_GetDataCompleted(object sender, GetDataCompletedEventArgs e)
    {
        if (!e.Cancelled && e.Error == null)
        {
            // On affiche le résultat dans une TextBox (car la méthode GetData retourne un string)
            this.MyTextBox.Text = e.Result;
        }
    }
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Points : 57
    Points
    57
    Par défaut
    Désolé du retard pour la réponse, je n'ai pas reçu le mail de notif suite à ta réponse

    Déjà, merci pour ton aide !!

    Depuis le temps que je galère.

    J'ai testé ton code et j'ai une question ou deux.

    Je n'arrive pas à intégrer la dll System.Management dans le projet de l'application

    Je dois mettre ce code dans l'appli ou dans une bibliothèque de classe portable ?

    Merci !!!

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Pourquoi as-tu besoin de System.Management ? Tu fais du WMI ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Points : 57
    Points
    57
    Par défaut
    Ok j'ai rien dit, j'ai buguer !!

    Bon tout est bon, sa compile ^^

    Mais je ne récupère pas la valeur du WS

    Snif !

    Je vais continuer à fouiller, je te tiens au courant.

    Merci

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Points : 57
    Points
    57
    Par défaut
    Actuellement je suis en test de cette manière :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    public class Class1
        {
            string test = string.Empty;
     
            public void Test()
            {
                // On récupère une instance du proxy
                ServiceAccesDonnees.AccesDonneesClient client = new ServiceAccesDonnees.AccesDonneesClient();
     
                // On s'abonne à l'évènement "xxxCompleted" (où xxx correspond au nom de la méthode du Web Service, ici elle s'appelle GetData)
                client.GetDataCompleted += this.client_GetDataCompleted;
     
                // On lance l'exécution asynchrone
                client.GetDataAsync(1);
            }
     
            void client_GetDataCompleted(object sender, ServiceAccesDonnees.GetDataCompletedEventArgs e)
            {
                if (!e.Cancelled && e.Error == null)
                {
                    test = e.Result.ToString();
                }
            }
     
            public string GetTest()
            {
                return test;
            }
        }
    Du coté de l'appli, j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                    BL.Class1 test = new BL.Class1();
                    test.Test();
                    string truc = test.GetTest();
    quand je débug, je n'arrive pas à rentrer dans la méthode 'client_GetDataCompleted'

    Je suis avec l'émulateur de visual studio encore bien sur, le web service est encore en local.

    Est ce qu'il se pourrait que ce soit lié au endpoint du web service ?

    Je en sais pas trop comment fonctionne cette partie.

    En faisant clic droit sur le web service dans la partie 'Référence de service', j'ai ça en config :

    Adresse: http://localhost:12204/ServiceAccesDonnees.svc

    Par contre, le fichier qui se trouve dans les propriétés de ma bibliothèque de classe et qui s'appelle ServiceReference.Designer.ClientConfig est vide.

    Peut être que le souci vient de là ?

    Merci

Discussions similaires

  1. [vb.net] retourner une valeur dans l'evenement click
    Par graphicsxp dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/05/2005, 13h06
  2. [VB.Net]Procédure Stocké retournant une valeur
    Par waldo2188 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 03/05/2005, 12h56
  3. Réponses: 7
    Dernier message: 15/03/2005, 14h44
  4. fonction retournant une valeur
    Par ryan dans le forum ASP
    Réponses: 4
    Dernier message: 06/09/2004, 17h45
  5. Retourner une valeur avec une fonction
    Par stephtbest dans le forum ASP
    Réponses: 4
    Dernier message: 31/10/2003, 16h37

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