367 Stimmen

Wo ist HttpContent.ReadAsAsync?

Ich sehe im Internet zahlreiche Beispiele für die Verwendung der neuen HttpClient Objekt (als Teil der neuen Web-API), dass es eine HttpContent.ReadAsAsync<T> Methode. Allerdings, MSDN wird diese Methode nicht erwähnt, und IntelliSense findet sie auch nicht.

Wo ist sie hin, und wie kann ich sie umgehen?

543voto

J... Punkte 30059

Es sieht so aus, als ob es sich um eine Erweiterungsmethode (in System.Net.Http.Formatting) handelt:

HttpContentExtensions-Klasse

Aktualisierung:

PM> install-package Microsoft.AspNet.WebApi.Client

Nach Angaben der System.Net.Http.Formatierung NuGet-Paket-Seite, die System.Net.Http.Formatting Paket ist nun veraltet und kann stattdessen in der Microsoft.AspNet.WebApi.Client Paket verfügbar auf NuGet hier .

75voto

rosta Punkte 867

Ich habe das gleiche Problem, so dass ich einfach erhalten JSON-String und deserialize zu meiner Klasse:

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);

50voto

Martin Brandl Punkte 51333

Wenn Sie bereits mit Newtonsoft.Json und nicht installieren wollen Microsoft.AspNet.WebApi.Client :

 var myInstance = JsonConvert.DeserializeObject<MyClass>(
   await response.Content.ReadAsStringAsync());

33voto

Mangesh Punkte 4881

2021 Update: Sieht so aus, als ob die Methode in .NET5 entfernt wurde. Alternativ können Sie verwenden ReadFromJsonAsync<>() de System.Net.Http.Json.HttpContentJsonExtensions . Es erfüllt seinen Zweck.

19voto

Vasya Milovidov Punkte 485

Sie können eine Erweiterungsmethode schreiben:

public static async Task<Tout> ReadAsAsync<Tout>(this System.Net.Http.HttpContent content) {
    return Newtonsoft.Json.JsonConvert.DeserializeObject<Tout>(await content.ReadAsStringAsync());
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X