Silverlight WP7:编码。默认值

Silverlight WP7:编码。默认值,silverlight,windows-phone-7,stackexchange-api,Silverlight,Windows Phone 7,Stackexchange Api,我正在尝试从WP7应用程序中的SO api获取结果。当我使用以下代码时,我能够在控制台应用程序中运行它 static void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { Console.Clear(); DataContractJsonSerializer ser = new DataContractJ

我正在尝试从WP7应用程序中的SO api获取结果。当我使用以下代码时,我能够在控制台应用程序中运行它

static void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            Console.Clear();
            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(RootObject));
            var stream = new MemoryStream(Encoding.Default.GetBytes(e.Result));
            var gzstream = new GZipInputStream(stream);

            RootObject qs = ser.ReadObject(gzstream) as RootObject;

            foreach (Question q in qs.questions)
            {
                Console.WriteLine(q.title);
            }

        }
重要的部分是Encoding.Default。若我选择了其他任何东西,它将返回错误GZIP头,第一个魔术字节不匹配'或类似的东西

WP7没有默认值,它只有Unicode和UTF8,这两者都不起作用


想法?

不要使用WebClient.DownloadString,使用DownloadData。通过这种方式,您将收到GZip编码的字节(无法真正转换为字符串),您可以将其直接传递给GZupInputStream。

改用WebRequest.BeginGetResponse。通过这种方式,您可以按照@carlosfigueria的建议获取字节,但由于webclient只有getstring,这是一种解决方法。

因为在WP7中,webclient没有下载数据,只有DownloadStringOops,所以您是对的。您可以使用WebClient.OpenReadAsync实现这一点。WP7上有。谢谢。下次我得试试。现在,我能够让@Titan2782建议发挥作用。