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

Silverlight Discussion :

Récupérer fichier XML depuis un serveur web


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 41
    Par défaut Récupérer fichier XML depuis un serveur web
    Bonjour,

    Je souhaite remplir un objet datagrid à l'aide d'information contenues dans une base de données.

    Pour cela j'ai un serveur qui récupère ces données et les mets dans un fichier XML lorsque que l'on appelle une action (l'action envoi le retourne le fichier xml complet): http://monserveur/monappli/monaction...nparam2=param2

    J'aimerais récupérer les données de mon fichier xml retourné lors de l'appelle de l'action.

    J'ai trouvé ce bout de code sur le net :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                    XDocument oDoc = XDocument.Load("File.xml");
                    var myData = from info in oDoc.Descendants("item")
                                 select new Person
                                 {
                                     FirstName = Convert.ToString(info.Element("FirstName").Value),
                                     LastName = Convert.ToString(info.Element("LastName").Value),
                                     Age = Convert.ToString(info.Element("Age").Value),
                                     IsMale = Convert.ToString(info.Element("IsMale").Value)
                                 };
                    oGrid = this.FindName("myDataGrid") as DataGrid;
                    oGrid.ItemsSource = myData;
    Le problème est que "XDocument oDoc = XDocument.Load("File.xml");" ne marche que pour un fichier en local. J'aimerais savoir comment remplacer cette ligne pour récupérer mon fichier XML sur le serveur (en Flex je sais qu'il faut un HTTPService), je n'ai pas trouvé l'équivalent en Silverlight.

    Merci pour vos réponses

  2. #2
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Bonjour,

    tu as le choix : WebClient et HttpWebRequest fonctionnent

    http://blogs.msdn.com/silverlight_sd...ebrequest.aspx

    WebClient est plus facile a utiliser.

  3. #3
    Membre averti
    Inscrit en
    Février 2010
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 41
    Par défaut
    Merci pour le lien, je me suis donc basé sur le petit tuto que tu m'a passé :

    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
    WebClient client = new WebClient();
                client.DownloadStringCompleted +=new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
                client.DownloadStringAsync(new Uri("http://monserveur/monappli/monaction...nparam2=param2"));
     
            void client_DownloadStringCompleted(objectsender,DownloadStringCompletedEventArgs e)
            {
                    XDocument oDoc = XDocument.Load(e.Result);
                    var myData = from info in oDoc.Descendants("item")
                                 select new Person
                                 {
                                     FirstName = Convert.ToString(info.Element("FirstName").Value),
                                     LastName = Convert.ToString(info.Element("LastName").Value),
                                     Age = Convert.ToString(info.Element("Age").Value),
                                     IsMale = Convert.ToString(info.Element("IsMale").Value)
                                 };
                    oGrid = this.FindName("myDataGrid") as DataGrid;
                    oGrid.ItemsSource = myData;
            }
    Quand j'exécute ce code je vois au log (du serveur) que l'action n'a pas été appelé. De plus j'ai le droit a une grosse exception : TargetInvocationException.

    En sachant que l'URL est bonne quand je la met dans mon navigateur il me télécharge bien mon fichier xml.

    Si quelqu'un a une idée.

  4. #4
    Membre averti
    Inscrit en
    Février 2010
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 41
    Par défaut
    Pareil avec HttpWebRequest il me met une erreur de sécurité. Ce que je comprend des deux exceptions (avec HttpWebRequest et WebClient) c'est qu'il y a une erreur de sécurité quelque part, mais je ne vois pas ce qu'il faut faire pour régler ça.

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Quelle est l'erreur de sécurité ? Tu as essayé de mettre un fichier crossaccesspolicy.xml ?

  6. #6
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Si le serveur contenant ton fichier XML n'est pas le serveur hébergeant contenant ton application Silverlight, il y a de bonne chance que se soit un problème de ClientAccessPolicy.xml comme dit Thomas :

    un exemple de fichier se trouve dans l'article ci dessous. Il se réfère à du WCF mais normalement c'est la même chose pour toi :

    http://blog.naviso.fr/wordpress/?p=27

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

Discussions similaires

  1. Erreurs de lecture d'un fichier xml depuis web
    Par Ema1714 dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 30/03/2014, 18h28
  2. Réponses: 3
    Dernier message: 06/11/2011, 08h21
  3. Réponses: 4
    Dernier message: 03/11/2010, 10h16
  4. Publier un fichier XML dans un serveur web
    Par jinar dans le forum Eclipse Platform
    Réponses: 3
    Dernier message: 25/04/2008, 10h27
  5. download de fichier depuis un serveur web
    Par minusette dans le forum Modules
    Réponses: 9
    Dernier message: 14/10/2005, 09h10

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