2012-02-11 7 views
7

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

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

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

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

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

+0

Почему это «сила», чтобы использовать HttpClient? –

+0

Нет такой вещи, как Visual Studio 2011. Вы имеете в виду Visual Studio 11 Developer Preview? И никакая версия Visual Studio не заставит вас использовать 'HttpClient'. Что именно вы подразумеваете под этим? Вы разрабатываете приложение в стиле Metro? – svick

+0

Я предполагаю, что он работает над приложением стиля Metro, и в 'WinRT' больше нет класса' WebClient'. –

ответ

29

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

С WebClient вы можете create a derived class and set the AutomaticDecompression of the underlying HttpWebRequest.

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

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

Хей, спасибо. Оно работало завораживающе !! – Kobe

 Смежные вопросы

  • Нет связанных вопросов^_^