4

我正在制作一个可以从这个链接http://dir.yummly.com/4/public/8a753a70358c827b01358da787bd68f3使用 json 的 windows phone 应用程序,但是当我尝试异步下载数据时,我无法获得可读的 e.result语。这是我的 C# 代码——

    Uri sub4 = new Uri("http://dir.yummly.com/4/public/8a753a70358c827b01358da787bd68f3");
        string kit = sub4.ToString();
    WebClient w = new WebClient();
        w.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
        w.DownloadStringAsync(sub4);
        MessageBox.Show("done");

        }
    void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
    string fres = e.Result;// here e.result was � 
    }

然后我想反序列化 e.result。我的代码适用于任何其他 json url。而且由于我正在使用 Windows Phone 应用程序,所以我无法使用其他 webcilent 方法,例如 DownloadData 和 DownloadString。我也看到了 utf8 和 unicode 之间的许多转换,但没有一个起作用。有人可以帮忙吗??

4

1 回答 1

2

您点击的 API 提供压缩内容,这就是您所看到的垃圾文本。您需要在使用前解压缩内容。您可以从标题中看出这一点:

Content-Encoding: gzip

不幸的是,我上次检查时,Windows Phone 中没有内置对 GZip 响应的支持。创建解决方法应该不会太难。谷歌搜索时,结果表明影响最小的解决方案是从 NuGet 添加SharpGIS.GZipWebClient库并从那里使用 GZip 支持。

于 2012-09-15T16:33:42.327 回答