Получить данные Json с помощью HttpClient - PullRequest
7 голосов
/ 11 февраля 2012

Я программирую для Visual Studio 2011, поэтому я вынужден использовать HttpClient. Мне нужно извлечь некоторые данные JSON из Интернета, но я предполагаю, что мне нужно установить для контента значение «json data» или что-то подобное, потому что я всегда получаю странные символы при использовании только этого кода:

HttpClient client = new HttpClient();
var response = client.Get("http://api.stackoverflow.com/1.1/users");
var content = response.Content.ReadAsString();

Так, как я могу установить содержание или что я должен сделать, чтобы получить правильные данные?

редактирование:

Вывод: что-то вроде этого:

1 Ответ

29 голосов
/ 11 февраля 2012

Проблема заключается в том, что ответ сжимается и HttpClient не распаковывает его автоматически по умолчанию.

С WebClient вы можете создать производный класс и установить AutomaticDecompression избазовый HttpWebRequest.

Вы не можете сделать это с HttpClient, потому что у него нет подходящих virtual методов.Но вы можете сделать это, передав HttpClientHandler его конструктору:

var client =
    new HttpClient(
        new HttpClientHandler
        {
            AutomaticDecompression = DecompressionMethods.GZip
                                     | DecompressionMethods.Deflate
        });
...