我正在制作一个可以使用此链接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之间的许多转换,但没有一个工作。有人可以帮忙吗?
答案 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数据的完整说明