2012-02-11 18 views
7

Estoy programando para Visual Studio 2011, así que estoy obligado a usar HttpClient. Necesito recuperar algunos datos JSON desde la web, pero supongo que necesito para establecer el contenido de "datos JSON" o algo porque siempre me caracteres extraños cuando sólo se utiliza este código:Recuperar datos Json con HttpClient

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

¿cómo puedo establecer el contenido o ¿qué debo hacer para obtener los datos correctos?

edición:

Salida: algo como esto:

+0

¿Por qué eso "fuerza" que utilizan HttpClient? –

+0

No existe Visual Studio 2011. ¿Quiere decir Visual Studio 11 Developer Preview? Y ninguna versión de Visual Studio te obliga a usar 'HttpClient'. ¿Qué quieres decir con eso exactamente? ¿Estás desarrollando una aplicación estilo Metro? – svick

+0

Supongo que está trabajando en una aplicación de estilo Metro y ya no hay una clase 'WebClient' en' WinRT'. –

Respuesta

29

El problema es que la respuesta es comprimido y HttpClient no descomprime automáticamente por defecto.

Con WebClient, puede create a derived class and set the AutomaticDecompression of the underlying HttpWebRequest.

No puede hacer eso con HttpClient, porque no tiene ningún método virtual adecuado. Pero se puede hacer pasar por HttpClientHandler a su constructor:

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

Hei, gracias. Funcionó a las mil maravillas !! – Kobe

Cuestiones relacionadas