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 :

Recupérer un fichier XML


Sujet :

Silverlight

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 59
    Points : 55
    Points
    55
    Par défaut Recupérer un fichier XML
    Bonjour,
    je souhaite recupérer un fichier XML en silverlight.
    J'ai écris le code suivant grâce à des tutos trouver 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
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    private HttpWebRequest mRequest;
     
     
             public Page()
            {
                // Required to initialize variables
                InitializeComponent();
     
                mRequest = (HttpWebRequest)WebRequest.Create(new Uri("adresse_du_fichier_XML"));
     
     
                mRequest.BeginGetResponse(new AsyncCallback(responseHandler), mRequest);
            }
     
            void responseHandler(IAsyncResult asyncResult)
            {
                HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;
     
     
                HttpWebResponse response = (HttpWebResponse)mRequest.EndGetResponse(asyncResult);
                Stream streamReader = response.GetResponseStream();
                XmlReader reader = XmlReader.Create(streamReader);
     
            }
    Voila j'ai une erreur à l'execution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.GetResponseStream()
    retourne null .

    Aurai vous une indication pour corriger cette erreur

    Merci d'avance

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Utilise plutôt la classe WebClient et dis nous ce que cela donne.

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 59
    Points : 55
    Points
    55
    Par défaut
    Merci pour ton aide.

    J'ai fait le test avec la classe WebClient.
    voici le code que j'ai ecrit :
    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
    public Page()
            {
                InitializeComponent();
                //init.Text = App.Current.Host.Source.AbsoluteUri;
                WebClient client = new WebClient();
     
                client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
                client.OpenReadAsync(new Uri("http://[Adresse_site_Web]/serialmanipulatorwebhmi.xml"));//"http://localhost:50000/serialmanipulatorwebhmi"));//, UriKind.RelativeOrAbsolute));
     
            }
     
     
            void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
            {
     StreamReader reader = new StreamReader(e.Result);//streamText.Stream);
            }
    Mais quand j'exécute j'ai l'erreur : Dowload Failure
    Après quelque recherche, il semblerait qu'il y ai un probleme au niveau du port.
    L'application communique avec l'adresse cible avec la port ou elle est lancée.
    Existerait-il un moyen de changer le port; par exemple le port 8080 pour l'exemple ci dessus.

    Cordialement.

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Tu es sur que c'est lié au port ? Car WebClient passe par le port 80 donc je vois pas pourquoi ca marcherait pas...

    Essaye de voir si cela ne vient pas du cross-domain et du fichier XML nécessaire pour l'autoriser: j'en suis pas sur mais c'est une possibilité aussi

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Le cross domain, en gros il dit que l'appli et le fichier xml doivent être sur le meme serveur ?

    genre si j'ai mon xml là: http://exemple.fr/monfichier.xml

    l'application doit être lancée depuis la meme machine qui héberge http://exemple.fr ?

    Avec un WebClient, est-ce que je peux récupérer un fichier xml de http://exemple.fr pour le retrouver sur mon ordinateur ?

    Merci pour l'éventuelle réponse.

    GLoeKS

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par GLoeKS Voir le message
    Le cross domain, en gros il dit que l'appli et le fichier xml doivent être sur le meme serveur ?
    Non, il dit que le fichier XML, qui est sur un autre serveur, est accessible à ton application Silverlight

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Ce serait bien qu'on trouve la solution, j'ai le même souci...
    La lecture de fichier se passe bien en local, mais chercher un xml sur le net... ça devient la misère...

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Et ne placant ce fameux fichier crossdomain.xml/crosspolicy.xml à la racine du serveur sur lequel vous souhaitez télécharger le fichier ?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    J'ai mis un clientaccesspolicy.xml, pas les deux dont tu parles.
    Et ça ne marche pas mieux :s

    je vais voir pour les deux autres dont tu parle

    Merci

    GLoeKS

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    avec fiddler, j'ai pu constater que silverlight tente un accès à clientaccesspolicy, mais il en retire rien.. comme s'il n'y avait pas accès...
    (je m'approprie un sujet qui n'est pas le mien... c'est grave ?)

    GLoeKS

  11. #11
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 59
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par GLoeKS Voir le message
    avec fiddler, j'ai pu constater que silverlight tente un accès à clientaccesspolicy, mais il en retire rien.. comme s'il n'y avait pas accès...
    (je m'approprie un sujet qui n'est pas le mien... c'est grave ?)

    GLoeKS
    Non c pas grave toute aide est bonne a prendre !!

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Bon eh bien je n'explique pas tout ...
    J'ai redémarré mon pc, et ma lecture de fichier xml depuis le net fonctionne, l'accès à clientaccesspolicy.xml fonctionne. je rapelle le contenu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="utf-8"?>
    <access-policy>
      <cross-domain-access>
        <policy>
          <allow-from>
            <domain uri="*"/>
     
          </allow-from>
          <grant-to>
            <resource path="/" include-subpaths="true"/>
          </grant-to>
        </policy>
      </cross-domain-access>
    </access-policy>
    il s'agit de mettre ça à la racine du serveur, et tout roule sans faire quoi que ce soit d'autre.. à partir du moment où le reste de l'appli tourne bien

    Il y a aussi quelque chose qu'il faut s'assurer, c'est que le OpenRead ne lit pas déjà le fichier voulu (chez moi ça faisait ça contre ma volonté)... ça renvoit une exception, du coup je ne permets la lecture du fichier que toutes les X secondes.

    Maintenant je ne sais pas si OpenReadAsync peut lire plusieurs fichiers différents en même temps, quelqu'un sait ?

    En ésperant que ton souci se règle par la même occasion.

    PS: gaffe avec fiddler, des fois il bloque l'accès au net (chez moi)

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Donc c'était bien un pb de crossdomain comme je vous l'avais suggéré

    Citation Envoyé par GLoeKS Voir le message
    Maintenant je ne sais pas si OpenReadAsync peut lire plusieurs fichiers différents en même temps, quelqu'un sait ?
    En même temps ? Non, tu peux lui faire lire que un fichier à la fois....

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

Discussions similaires

  1. [XL-2007] probléme pour recupération des dates d'un fichier xml sous VBA
    Par gibba88 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/05/2012, 10h30
  2. recupérer un arbre de répertoire dans un fichier xml avec LXML
    Par jean-pat dans le forum Général Python
    Réponses: 9
    Dernier message: 13/02/2012, 16h08
  3. Recupérer des chaines dans un fichier XML
    Par uskiki85 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 14/04/2010, 17h05
  4. [JDOM] recupérer des valeurs d'un fichier xml
    Par legendaire dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 05/02/2008, 16h21
  5. [vb.net]recupération de donnée provenant d'un fichier xml
    Par moust dans le forum Windows Forms
    Réponses: 24
    Dernier message: 04/07/2005, 09h55

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