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 :

XML_MissingRoot pb WebClient


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Par défaut XML_MissingRoot pb WebClient
    Bonjour,

    Je suis en train de réaliser le tuto "Utiliser Silverlight 2 avec MySQL en C#"... et j'ai quelque petits problèmes

    Au démarrage de l'appli, quand il faut remplir la listBox avec le contenu de la bdd,
    l'appli plante au moment de traiter le résultat du script xml, je me retrouve avec cette message box:



    L'appli plante exactement ici...:
    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
     void helper_DownloadComplete(object sender, DownloadStringCompletedEventArgs e)
            {
                try
                {
                    var xmlElements = XDocument.Parse(e.Result);
                    var elements = from data in xmlElements.Descendants("data")
                                   select new TodoElement
                                   {
                                       Id = (int)data.Element("id"),
                                       Libelle = ((string)data.Element("libelle")).Trim()
                                   };
                    ListeTodo.ItemsSource = elements;
                }
                catch (Exception ex)
                {
                    HtmlPage.Window.Alert(ex.Message);
                }
            }
    ... au moment de traiter e.result, après debug j'ai remarqué que e.result est vide. Pourtant l'url de la page php utilisée pour génèrer le script xml me semble
    correct, et j'ai tester cette même page à part, elle me génère bien le xml...

    Donc voilà, je sais pas trop où chercher, j'ai surement mal configurer quelque chose, ou peut-être ma placé mes fichiers...

    Si quelqu'un peut m'aider...

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Si e.Result est vide, le problème vient pas de Silverlight.

    Montre nous le code avant (l'appel à la page).
    Ensuite tu es vraiment certain que la page .php retourne bien du xml ? Et que ce xml est valide ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Par défaut
    Ok, je vais essayer de mettre les choses dans l'ordre:

    Donc au chargement de l'appli, on a une fonction qui s'occupe de charger les données:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private void ChargementDonnees()
            {
                try
                {
                    var helper = new WebClientHelper(string.Format("{0}/gettodolist.php", Config.BASEPATH));
                    helper.DownloadComplete += helper_DownloadComplete;
                    helper.Execute();
                }
                catch (Exception ex)
                {
                    HtmlPage.Window.Alert(ex.Message);
                }
            }
    avec la classe WebClientHelper:
    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
     
    public class WebClientHelper
        {
            public event DownloadStringCompletedEventHandler DownloadComplete;
            private void OnDownloadComplete(object sender, DownloadStringCompletedEventArgs e)
            {
                if (DownloadComplete != null)
                {
                    DownloadComplete(sender, e);
                }
            }
     
            private readonly string _url;
     
            public WebClientHelper(string url)
            {
                var random = new Random();
                _url = url;
                if (_url.Contains("?"))
                    _url = _url + "&trick=" + random.Next();
                else
                    _url = _url + "?trick=" + random.Next();
            }
     
            public void Execute()
            {
                var webClient = new WebClient();
                webClient.DownloadStringCompleted += webClient_DownloadStringCompleted;
                webClient.DownloadStringAsync(new Uri(_url));
            }
     
            void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
            {
                if (e.Error == null)
                {
                    OnDownloadComplete(sender, e);
                }
            }
        }
    et le chemin contenu dans la classe Config:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class Config
        {
            public const string BASEPATH = "http://localhost/testSilverlight2";
        }
    Sinon voici la page gettodolist.php:
    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
     
    <?php
    	header('Content-type: text/xml');
     
    	$host = "localhost"; // le nom ou l'adresse du host
        $user = "root"; // user de la base
        $pass = ""; // mot de passe
        $connexion = mysql_connect($host,$user,$pass) or die('Erreur de connexion');
        $bdd = "test"; // nom de la base de données
    	if (!mysql_select_db($bdd,$connexion))
    		return 0;
    	if (!$connexion)
    		return 0;
     
    	$query = "SELECT * FROM `todolist`";
     
    	$result = mysql_query($query);
    	if (!$result)
    		return 0;
    	echo '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?><datas>';
    	while ($line = mysql_fetch_assoc($result))
    	{
    		echo "<data>";
    		$id = $line["id"];
    		echo "<id>".$id."</id>";
    		echo "<libelle>".$line["libelle"]."</libelle>";
    		echo "</data>";
    	}
    	mysql_free_result($result);	// Libération des résultats	
    	echo "</datas>";
     
    	mysql_close($connexion);	// Fermeture de la connexion, cela ne libère pas les résultats
    ?>
    et le xml généré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <datas>
    <data>
    <id>1</id>
    <libelle>Mettre le projet de demo en telechargement</libelle>
    </data>
    </datas>
    Pour la validité du xml, je ne sais pas trop, j'en ai jamais vraiment utilisé, j'ai fais quelque recherche mais je ne vois pas trop ce qui pourrais poser problème.

    Quand je débugge, l'url de la page utilisée correspond bien, mais j'ai placé mes fichiers arbitrairement, il y a peut-être une relation entre les fichiers de l'appli Silverlight et les fichiers .php qui m'échappe...

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    En mode debug dans WebClientHelper, est-ce que tu as bien ce que tu dois avoir là où tu dois avoir (_url, e.Result...).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Par défaut
    oui, j'ai tout et la valeur de _url est toujours bonne... e.Result est toujours vide... sinon toutes les infos pour le webclient m'on l'air correctes...

  6. #6
    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
    Tu as bien mis le fichier crossdomain.xml, comme ici: http://www.developpez.net/forums/sho...d.php?t=572948 ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Par défaut
    oui, il est à la racine avec mes fichiers php...

    Sinon, désolé j'avais pas vu ce topic...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Par défaut
    Bon, bah j'ai trouvé... en fait, il n'y avait ni problème de code, ni problème avec l'organisation des fichiers. C'est juste que j'utilise Wamp et il plante si je le démarre après VS 2008 (il a l'air de fonctionner, l'icône dans le systray est normale mais visiblement, il y a quelque chose qu'il n'apprécie pas). Donc, il faut juste que je le démarre avant VS 2008...

    Voilà, merci pour votre aide et encore désolé d'avoir créé un autre topic pour ce problème, je ferai mieux mes recherches la prochaine fois...

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

Discussions similaires

  1. Download de fichier (WebClient.DownloadFile)
    Par matech dans le forum ASP.NET
    Réponses: 6
    Dernier message: 23/06/2009, 16h58
  2. WebClient et DownloadFileAsync
    Par jomree dans le forum C#
    Réponses: 4
    Dernier message: 25/11/2007, 16h04
  3. Réponses: 1
    Dernier message: 21/08/2007, 16h37
  4. Pour utiliser htmlDocument: webBrowser vs webclient
    Par Petite_Escalope dans le forum VB.NET
    Réponses: 1
    Dernier message: 11/06/2007, 03h35
  5. [vb.net] pb exception / webclient
    Par xeo dans le forum Windows Forms
    Réponses: 10
    Dernier message: 28/09/2006, 13h05

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