Где HttpContent.ReadAsAsync?

Я вижу в тоннах примеров в Интернете, используя новый объект HttpClient (как часть нового Web API), который должен быть HttpContent.ReadAsAsync<T>. Однако MSDN не упоминает этот метод, и IntelliSense не находит его.

Где это было, и как мне обойти это?

Ответ 1

Похоже, что это метод расширения (в System.Net.Http.Formatting):

Класс HttpContentExtensions

Update:

PM > установочный пакет Microsoft.AspNet.WebApi.Client

Согласно странице System.Net.Http.Formatting NuGet пакет System.Net.Http.Formatting теперь устарел и может быть найден в Microsoft.AspNet.WebApi.Client пакет доступен на NuGet здесь.

Ответ 2

У меня такая же проблема, поэтому я просто получаю строку JSON и десериализую свой класс:

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

Ответ 3

Если вы уже используете Newtonsoft.Json и не хотите устанавливать Microsoft.AspNet.WebApi.Client:

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

Ответ 4

Вы можете написать метод расширения:

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

Ответ 5

Просто щелкните правой кнопкой мыши в своем проекте. Управляйте поиском пакетов NuGet для Microsoft.AspNet.WebApi.Client, установите его, и у вас будет доступ к методу расширения.

Ответ 6

Попав несколько раз и следуя куче предложений, если вы не можете найти его доступным после установки NuGet Microsoft.AspNet.WebApi.Client вручную добавьте ссылку из папки с пакетами в решении, чтобы:

\Microsoft.AspNet.WebApi.Client.5.2.6\lib\net45\System.Net.Http.Formatting.dll

И не попадайтесь в ловушку добавления старых ссылок на NuGet System.Net.Http.Formatting.dll.