【问题标题】:Silverlight: Difficulty with WebClientSilverlight:使用 WebClient 的困难
【发布时间】:2010-10-31 19:55:02
【问题描述】:

我遇到了一个非常奇怪的问题。我一定是在做一些非常明显的错误,但我看不到。我正在构建一个当前在模拟器中运行的 wp7 应用程序。

我有一个返回 JSON 的 URL。我在浏览器中访问此 URL 并验证它是否有效。

我在 Silverlight 中使用 WebClient 从这个 URL 获取数据。当我得到结果时,一切都一样 - 除了其中一个 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);
        // ...
    }

我做错了什么?

【问题讨论】:

  • 我认为原始 JSON 数据返回时是相同的,即e.Result 是一样的,而 JObject.Parse 没有像你期望的那样反序列化?
  • 不,实际上,e.Result相同的。这就是让我感到害怕/让我觉得我在做一些非常愚蠢的事情的原因。
  • 两个客户端之间的接受标头是否不同?
  • 嗯,这很奇怪。 e.Result 只是 Webclient 的直接输出?我相当肯定它不会仅仅为了它而在响应中删除一个字段。除非您在 webclient 响应之间进行某种转换,否则我会安装 fiddler 并查看原始 HTTP。

标签: silverlight json rest windows-phone-7 webclient


【解决方案1】:

您能否在 Fiddler 之类的工具中同时捕获请求/响应(来自浏览器和 Silverlight)并进行比较?具体来说,请注意请求中 HTTP 标头的任何差异。

然后(如果您使用的是 Fiddler),您可以通过一一调整标头来调整 Silverlight 请求,使其看起来像浏览器请求,直到找到能够产生差异的那个。

【讨论】:

  • 我下载了 Fiddler2,但没有显示来自模拟器的请求。我用错了吗?
  • 请求是否发送到“localhost”?如果是这样,有关于设置 Fiddler 的特殊说明,请参阅 Fiddler 文档
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
相关资源
最近更新 更多