2010-10-31 6 views
0

J'ai un problème vraiment bizarre. Je dois faire quelque chose de vraiment évident qui est faux, mais je ne peux pas le voir. Je construis une application wp7 qui fonctionne actuellement dans l'émulateur.Silverlight: Difficulté avec WebClient

J'ai une URL qui renvoie JSON. Je visite cette URL dans mon navigateur et je vérifie que cela fonctionne. Je reçois les données de cette URL dans Silverlight en utilisant WebClient. Quand j'obtiens le résultat, c'est pareil - sauf qu'un des champs JSON est parti.

Comment est-ce possible? Je ne suis pas sûr de ce que je fais mal. Qu'est-ce qui peut provoquer des incohérences entre la façon dont JSON regarde dans un navigateur web et un résultat WebClient dans l'émulateur wp7?

Voici le code:

  downloadData(STORIES_URL + vid, 
       delegate(object sender, DownloadStringCompletedEventArgs e) 
       { 
        data_StoryDownloadCompleted(sender, e, _sectionStories[vid], STORIES_URL + vid); 
       }); 

    static void data_StoryDownloadCompleted(object sender, DownloadStringCompletedEventArgs e, ObservableCollection<Story> results, string uri) 
    { 
     if (e.Error != null) 
     { 
      throw e.Error; 
     } 

     JObject data = JObject.Parse(e.Result); 
     // ... 
    } 

Que pouvais-je faire mal?

+0

Je présume que les données JSON brutes sont les mêmes qui reviennent, c'est-à-dire. e.Result est le même, et JObject.Parse ne fait pas son désérialiser comme vous vous y attendiez? – jasper

+0

Non, en fait, 'e.Result' n'est pas * le même. C'est ce qui me fait peur/me fait penser que je fais quelque chose de vraiment stupide. –

+0

Les en-têtes d'acceptation sont-ils différents entre les deux clients? –

Répondre

0

Pouvez-vous capturer à la fois les demandes/réponses (à partir du navigateur et de Silverlight) dans un outil comme Fiddler et les comparer? Spécifiquement, surveillez toute différence dans les en-têtes HTTP dans les demandes. Puis (si vous utilisez Fiddler), vous pouvez modifier la requête Silverlight en ajustant les en-têtes un par un pour faire ressembler la requête du navigateur, jusqu'à ce que vous trouviez celui qui fait la différence.

+0

J'ai téléchargé Fiddler2, mais les demandes de l'émulateur n'apparaissent pas. Est-ce que je l'utilise mal? –

+0

Les demandes vont-elles à "localhost"? Si oui, il y a des instructions spéciales sur la configuration de Fiddler, voir les docs de Fiddler –

Questions connexes