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

Windows Phone .NET Discussion :

Récupérer les données depuis un webservice Json toutes les 30 secondes [Windows Phone 8]


Sujet :

Windows Phone .NET

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 34
    Par défaut Récupérer les données depuis un webservice Json toutes les 30 secondes
    Bonjour ,

    Je suis débutant en développement windows phone, j'ai codé un webservice JSON pour un projet Windows Phone. J'ai besoin de récupérer les données du webservice toutes les 30 secondes, j'utilise DispatcherTimer avec un système de threads.

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    private void client_DownloadInfoConf(object sender, DownloadStringCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                //some code
                DispatcherTimer TradeThread = new DispatcherTimer();
                TradeThread.Interval = TimeSpan.FromMilliseconds(1000);
                TradeThread.Tick += new EventHandler(dispatcherTimer_Tick);
                TradeThread.Start();
     
            }
            else
                MessageBox.Show("Error : " + e.Error);
        }
        private void dispatcherTimer_Tick(object sender, EventArgs e)
        {
            WebClient client_quest = new WebClient();
     
     
            client_quest.DownloadStringAsync(new Uri("url" + info_conf.id));
            client_quest.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadQuestConf); 
        }
        private void client_DownloadQuestConf(object sender, DownloadStringCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                string text = e.Result;
                QuestConf resultat = JsonConvert.DeserializeObject<QuestConf>(e.Result);
                string sub = texte.Substring(0, 5);
                TextBlock text_quest = new TextBlock();
                foreach (var cust in resultat)
                {
     
                    //Le problème est ici, je n'arrive pas à récupérer les données de var cust
                }
            }
            else
                MessageBox.Show("Error" + e.Error);
        }
    Le probleme est que si j'essaie d'obtenir les données de la "var cust", une erreur se produit, je ne peux pas extraire les données de l'objet ...

    Les classes, faites pour récupérer les données Json du webservice :

    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
     public class Question
        {
            public string id { get; set; }
            public string category { get; set; }
            public string name { get; set; }
            public string value { get; set; }
        }
     
        public class Answer
        {
            public string id { get; set; }
            public string label { get; set; }
        }
     
        public class QuestConf:List<object>
        {
            public Question question { get; set; }
            public List<Answer> answers { get; set; }
        }
    Merci d'avance pour votre aide

  2. #2
    Membre extrêmement actif Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Par défaut
    C'est quoi le message d'erreur ?

    Après, il ne faut pas oublié que toutes les 30 secondes ton code va s'exécuter et peut être se marcher dessus !!!

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 34
    Par défaut
    alors j'ai rajouté dans le foreach ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TextBlock text_quest = new TextBlock();
                    foreach (object cust in resultat)
                    {
                        text_quest.Text = resultat.question.name;
                        content_conf.Children.Add(text_quest);
                    }
    en gros je vais je vais créer un textblock dans l'interface utilisateur et je vais le remplir par les données déserialisés obtenu par le webservice Json. Et la il me pete une erreur au premier rafraichissement sur la ligne "text_quest.Text = resultat.question.name;" :

    A first chance exception of type 'System.NullReferenceException' occurred in HappyConf.DLL
    An exception of type 'System.NullReferenceException' occurred in HappyConf.DLL but was not handled in user code

    donc je pense que mes variables se remplissent mal mais je n'arrive pas a identifier d'ou provient mon erreur ...

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 34
    Par défaut
    Ca peut aussi aider a répondre, voici les données que je recoit en json (qui me permettent de remplir les classes ci dessus) :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    [
    {
    "question": {
    "id": "1",
    "category": "1",
    "name": "Niveau sonore",
    "value": "1,2"
    },
    "answers": [
    {
    "id": "1",
    "label": "Pas assez fort"
    },
    {
    "id": "2",
    "label": "Normal"
    }
    ]
    },
    {
    "question": {
    "id": "2",
    "category": "1",
    "name": "Débit de parole",
    "value": "3,2,4"
    },
    "answers": [
    {
    "id": "3",
    "label": "Trop lent"
    },
    {
    "id": "2",
    "label": "Normal"
    },
    {
    "id": "4",
    "label": "Trop rapide"
    }
    ]
    },
    {
    "question": {
    "id": "3",
    "category": "2",
    "name": "Niveau de compréhension",
    "value": "6,7,8"
    },
    "answers": [
    {
    "id": "6",
    "label": "Peu compréhensible"
    },
    {
    "id": "7",
    "label": "Compréhensible"
    },
    {
    "id": "8",
    "label": "Parfait"
    }
    ]
    },
    {
    "question": {
    "id": "4",
    "category": "2",
    "name": "Interêt",
    "value": "9,10,11"
    },
    "answers": [
    {
    "id": "9",
    "label": "Peu intéressant"
    },
    {
    "id": "10",
    "label": "Intéressant"
    },
    {
    "id": "11",
    "label": "Très intéressant"
    }
    ]
    }
    ]

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2008
    Messages : 242
    Par défaut
    Hello,

    dans ta variable "result", tu as bien ce que tu veux?
    Pourquoi n'utilise tu pas une listbox où tu rajoute au fur et à mesure? Ou même une propriété MvvM :-)

    Et sinon, pour ton exception, soit "result", soit "question" est nul.

    Cordialement,
    Mafyou.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 34
    Par défaut
    Je ne maitrise pas trop le c#, sur visual studio avec un breakpoint sur la ligne d'erreur "cust" du foreach contient ""{ "id": "2", "name": "Compréhension" }"" et j'aimerais recupérer le name, je m'y prend surement mal dans le foreach car les variables ne sont pas vide .... Meme si je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach (object cust in resultat)
                    {
                        text_quest.Text = cust.name;
                        content_conf.Children.Add(text_quest);
                    }
    cust.name est aussi nulle ... Du coup ca refait une erreur

    Pour la listbox je vais chercher de ce coté, mais le problème sera le même, si je n'arrive pas a récupérer correctement les données json, ca ne marchera pas ....

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2008
    Messages : 242
    Par défaut
    Maîtriser le C# n'a rien à voir.
    C'est juste de l'utilisation de l'IDE là :-)

    Passe ton "object" dans ton foreach à "QuestConf:List<object>" et ça devrait le faire.
    (en faisant bien sûr un test sur la nullité de l'objet)

    Cordialement,
    Mathieu.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 34
    Par défaut
    Merci, ca a bien marché Bon dimanche !

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

Discussions similaires

  1. [XL-2007] Récuperer les données d'un fichier et traiter les données
    Par kekefff dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/05/2014, 20h29
  2. Réponses: 2
    Dernier message: 26/09/2011, 09h17
  3. Réponses: 2
    Dernier message: 05/09/2011, 17h14
  4. Ado: comment récupérer les données depuis une bd?
    Par zidane2 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/09/2010, 01h09
  5. Récupérer toutes les données en une fois depuis la base.
    Par zuzuu dans le forum Persistance des données
    Réponses: 3
    Dernier message: 10/03/2009, 11h41

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