Где 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.