0

WP7アプリでSOAPIから結果を取得しようとしています。次のコードを使用すると、コンソールアプリで動作させることができました

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しかなく、どちらも機能しません。

アイデア?

4

2 に答える 2

1

WebClient.DownloadStringを使用せず、DownloadDataを使用してください。このようにして、GZipでエンコードされたバイト(実際には文字列に変換できません)を受け取り、それをGZupInputStreamに直接渡すことができます。

于 2011-05-17T20:21:06.563 に答える
1

代わりにWebRequest.BeginGetResponseを使用してください。このようにして、@ carlosfigueriaが提案したようにバイトを取得できますが、webclientにはgetstringしかないため、これは回避策です。

于 2011-05-17T20:31:03.647 に答える