WP7: Encoding.Default - PullRequest
       23

WP7: Encoding.Default

0 голосов
/ 18 мая 2011

Я пытаюсь получить результаты от SO API в приложении WP7. Я смог заставить его работать в консольном приложении, когда использовал следующий код

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 ]

1 голос
/ 18 мая 2011

используйте взамен WebRequest.BeginGetResponse.Таким образом, вы можете получить байты, как предложено @carlosfigueria, но поскольку у веб-клиента есть только строка, это обходной путь.

1 голос
/ 18 мая 2011

Не используйте WebClient.DownloadString, используйте DownloadData. Таким образом, вы получите байты в кодировке GZip (которые на самом деле не могут быть преобразованы в строку) и можете передать их непосредственно в GZupInputStream.

...