WP7:Encoding.Default

时间:2011-05-17 20:18:00

标签: silverlight windows-phone-7 stackexchange-api

我正在尝试从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。如果我选择了其他任何东西,它将返回Error GZIP标头,第一个魔术字节不匹配'或类似的东西。

WP7没有默认值,它只有Unicode和UTF8,它们都不起作用。

想法?

2 个答案:

答案 0 :(得分:1)

不要使用WebClient.DownloadString,请使用DownloadData。这样你就会收到GZip编码的字节(实际上不能转换成字符串),你可以将它直接传递给GZupInputStream。

答案 1 :(得分:1)

请改用WebRequest.BeginGetResponse。这样你可以得到@carlosfigueria建议的字节,但由于webclient只有getstring这是一个解决方法。