在Windows Phone 7中使用json webservice

时间:2012-09-15 16:28:55

标签: c# json windows-phone-7

我正在制作一个可以使用此链接http://dir.yummly.com/4/public/8a753a70358c827b01358da787bd68f3的json的Windows手机应用程序,但是当我尝试异步下载数据时,我无法用可读语言获取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应用程序,所以我无法使用其他的网络静音方法,如DownloadData和DownloadString。此外,我看到utf8和unicode之间的许多转换,但没有一个工作。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

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

Content-Encoding: gzip

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

答案 1 :(得分:1)

您只需按照以下链接,它就会提供有关如何使用和解析服务器 How to Consume Json Service in wp7 application中的json数据的完整说明