2010-10-31 48 views
0

我有一個很奇怪的問題。我必須做出明顯的錯誤,但我看不到它。我正在構建一個當前在模擬器中運行的wp7應用程序。的Silverlight:難度與Web客戶端

我有一個返回JSON的URL。我在瀏覽器中訪問此URL並驗證它是否有效。

我使用WebClient此URL在Silverlight中獲取數據。當我得到結果時,它們都是一樣的 - 除了其中一個JSON字段沒有了。

這怎麼可能?我不確定我做錯了什麼。什麼可能會導致JSON在Web瀏覽器中出現的方式與wp7仿真器中的WebClient之間的不一致?

下面的代碼:

  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); 
     // ... 
    } 

什麼可能我是做錯了什麼?

+0

我假定原始JSON數據是相同的回來,即。 e.Result是一樣的,JObject.Parse沒有像你期望的那樣進行反序列化? – jasper 2010-10-31 20:16:26

+0

不,實際上'e.Result'不是*相同。那讓我感到困惑/讓我覺得我在做一些非常愚蠢的事情。 – 2010-10-31 21:20:16

+0

這兩個客戶端的accept標頭是否不同? – 2010-10-31 22:45:24

回答

0

你能像小提琴手的工具捕捉(從瀏覽器和Silverlight的)這兩個請求/響應並加以比較?具體來說,請注意請求中HTTP標頭的差異。

然後(如果您使用招),您可以通過調節頭逐一使它看起來像瀏覽器請求,直到找到一個使其中的差別調整Silverlight的請求。

+0

我下載了Fiddler2,但來自仿真器的請求沒有顯示出來。我用錯了嗎? – 2010-11-05 01:42:00

+0

請求是否轉到「localhost」?如果是這樣,有關於設立提琴手的特別說明,請參閱提琴手文檔 – 2010-11-05 03:49:41