¿Dónde está HttpContent.ReadAsAsync?

Resuelto David Pfeffer asked hace 12 años • 9 respuestas

Veo en toneladas de ejemplos en la web que utilizan el nuevo HttpClientobjeto (como parte de la nueva API web) que debería haber HttpContent.ReadAsAsync<T>un método. Sin embargo, MSDN no menciona este método ni IntelliSense lo encuentra.

¿A dónde fue y cómo puedo solucionarlo?

David Pfeffer avatar May 01 '12 21:05 David Pfeffer
Aceptado

Parece que es un método de extensión (en System.Net.Http.Formatting):

Clase HttpContentExtensions

Actualizar:

PM> paquete de instalación Microsoft.AspNet.WebApi.Client

Según la página del paquete System.Net.Http.FormattingSystem.Net.Http.Formatting NuGet, el paquete ahora es heredado y, en cambio, se puede encontrar en el Microsoft.AspNet.WebApi.Clientpaquete disponible en NuGet aquí .

J... avatar May 01 '2012 14:05 J...

Tengo el mismo problema, así que simplemente obtengo una cadena JSON y la deserializa en mi clase:

HttpResponseMessage response = await client.GetAsync("Products");
//get data as Json string 
string data = await response.Content.ReadAsStringAsync();
//use JavaScriptSerializer from System.Web.Script.Serialization
JavaScriptSerializer JSserializer = new JavaScriptSerializer();
//deserialize to your class
products = JSserializer.Deserialize<List<Product>>(data);
rosta avatar Jun 05 '2014 05:06 rosta

Si ya estás usando Newtonsoft.Jsony no quieres instalar Microsoft.AspNet.WebApi.Client:

 var myInstance = JsonConvert.DeserializeObject<MyClass>(
   await response.Content.ReadAsStringAsync());
Martin Brandl avatar Feb 11 '2018 19:02 Martin Brandl

Actualización 2021: Parece que el método se eliminó en .NET5. Alternativamente, puedes usar ReadFromJsonAsync<>()desde System.Net.Http.Json.HttpContentJsonExtensions. Resuelve el propósito.

Mangesh avatar Mar 01 '2021 10:03 Mangesh