2012-05-01 20 views
167

Ich sehe in Tonnen von Beispielen im Web unter Verwendung des neuen HttpClient Objekts (als Teil der neuen Web API), dass es HttpContent.ReadAsAsync<T> Methode geben sollte. MSDN erwähnt diese Methode jedoch nicht, und IntelliSense findet es auch nicht.Wo ist HttpContent.ReadAsAsync?

Wo ist es gelaufen, und wie arbeite ich daran?

Antwort

269

Es sieht aus wie es eine Erweiterungsmethode (in System.Net.Http.Formatting) ist:

HttpContentExtensions Class

Update:

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

Gemäß der System.Net.Http.Formatting NuGet pa Das Paket System.Net.Http.Formatting ist jetzt veraltet und kann stattdessen im Microsoft.AspNet.WebApi.Client Paket gefunden werden, das unter NuGet here verfügbar ist.

+0

Hat dies in der neuesten Client nugets veraltet? Kann es jetzt nicht finden (früher war ich dazu in der Lage). – georgiosd

+0

Es könnte gut sein. .NET4.5 hat eine Menge neuer Sachen in Bezug auf async/Aufgaben (abwarten, usw.) hinzugefügt, so dass diese Erweiterungen nicht mehr notwendig sind. Ich würde vielleicht hier zum Beispiel schauen: http://msdn.microsoft.com/en-us/library/system.net.http.httpcontent.aspx –

+0

Ich kann das gleiche Verhalten mit 'ReadAsAsync' und Angabe ein JSON-Formatierer, aber es war eine praktische Abkürzung. – georgiosd

47

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

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

Abgesehen von der Tatsache, dass dies die Frage nicht beantwortet, warum wurde das abgelehnt? Ist es keine vernünftige Alternative zu 'ReadAsAsync'? – Jess

+3

Es ist sicher! +1! – Mrchief

+4

wahrscheinlich, weil Sie die Frage nicht beantwortet haben, wo die Verlängerungsmethode hingehört. Schreiben Sie Ihre eigenen ist eine schlechte Problemumgehung – BritishDeveloper

1

Einfach Rechtsklick in Ihrem Projekt geht verwalten NuGet Suche Pakete für Microsoft.AspNet.WebApi.Client installieren und Sie haben Zugriff auf die Erweiterungsmethode.

+2

Fügt dies der bereits angenommenen Antwort etwas hinzu? –

+0

ja sie beschweren sich noch, also .. –

+3

Wer beschwert sich über was? –

2

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

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