2012-05-01 36 views
167

Vedo in tonnellate di esempi sul Web utilizzando il nuovo oggetto HttpClient (come parte della nuova API Web) che dovrebbe essere il metodo HttpContent.ReadAsAsync<T>. Tuttavia, MSDN non menziona questo metodo, né IntelliSense lo trova.Dove si trova HttpContent.ReadAsAsync?

Dove è andato, e come posso aggirarlo?

risposta

269

Sembra si tratta di un metodo di estensione (in System.Net.Http.Formatting):

HttpContentExtensions Class

Aggiornamento:

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

Secondo il System.Net.Http.Formatting NuGet pa pagina ckage, il pacchetto System.Net.Http.Formatting è ora legacy e può essere invece trovato nel pacchetto Microsoft.AspNet.WebApi.Client disponibile su NuGet here.

+0

ciò è stato deprecato in ultimo cliente Nugets? Non riesco a trovarlo ora (usato per essere in grado di). – georgiosd

+0

Potrebbe benissimo essere. .NET4.5 ha aggiunto molte novità riguardo async/task (attendi, ecc.), Quindi queste estensioni potrebbero non essere più necessarie. Potrei dare un'occhiata qui, ad esempio: http://msdn.microsoft.com/en-us/library/system.net.http.httpcontent.aspx –

+0

Posso ottenere lo stesso comportamento con 'ReadAsAsync' e specificare un formattatore JSON ma era una scorciatoia pratica. – georgiosd

47

Ho lo stesso problema, così ho semplicemente ottenere stringa JSON e deserializzare alla mia classe:

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

A parte il fatto che questo non risponde alla domanda, perché questo è stato revocato? Non è un'alternativa ragionevole a 'ReadAsAsync'? – Jess

+3

È sicuro! +1! – Mrchief

+4

probabilmente perché non hai risposto alla domanda su dove è andato il metodo di estensione. Scrivere il proprio è una soluzione scadente – BritishDeveloper

1

Basta fare clic destro nel progetto andare Gestire NuGet Pacchetti ricerca di Microsoft.AspNet.WebApi.Client installarlo e avrai accesso al metodo di estensione.

+2

Questo aggiunge qualcosa alla risposta già accettata? –

+0

si stavano ancora lamentando, quindi .. –

+3

Chi si lamenta di cosa? –

2

Se si sta già utilizzando Newtonsoft.Json e non si desidera installare Microsoft.AspNet.WebApi.Client:

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