[英]Where is HttpContent.ReadAsAsync?
我在網上看到大量使用新HttpClient
對象(作為新 Web API 的一部分)的示例,應該有HttpContent.ReadAsAsync<T>
方法。 但是, MSDN沒有提到這種方法,IntelliSense 也沒有找到。
它去了哪里,我該如何解決?
看起來它是一個擴展方法(在 System.Net.Http.Formatting 中):
更新:
PM> 安裝包 Microsoft.AspNet.WebApi.Client
根據System.Net.Http.Formatting NuGet 包頁面, System.Net.Http.Formatting
包現在是舊包,可以在NuGet 此處提供的Microsoft.AspNet.WebApi.Client
包中找到。
我有同樣的問題,所以我只是獲取 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);
如果您已經在使用Newtonsoft.Json
並且不想安裝Microsoft.AspNet.WebApi.Client
:
var myInstance = JsonConvert.DeserializeObject<MyClass>(
await response.Content.ReadAsStringAsync());
您可以編寫擴展方法:
public static async Task<Tout> ReadAsAsync<Tout>(this System.Net.Http.HttpContent content) {
return Newtonsoft.Json.JsonConvert.DeserializeObject<Tout>(await content.ReadAsStringAsync());
}
只需右鍵單擊您的項目,轉到管理 NuGet 包搜索 Microsoft.AspNet.WebApi.Client 安裝它,您將可以訪問擴展方法。
2021 年更新:看起來該方法已在 .NET5 中刪除。 或者,您可以使用System.Net.Http.Json.HttpContentJsonExtensions
ReadFromJsonAsync<>()
。 它解決了目的。
已經點擊了幾次並遵循了一系列建議,如果您在安裝 NuGet Microsoft.AspNet.WebApi.Client 后沒有發現它可用,則手動從解決方案中的包文件夾中添加一個引用到:
\Microsoft.AspNet.WebApi.Client.5.2.6\lib\net45\System.Net.Http.Formatting.dll
並且不要陷入向 System.Net.Http.Formatting.dll NuGet 添加舊引用的陷阱
盡管我遇到了同樣的問題,但該線程中的答案並沒有完全幫助我解決問題。 出於這個原因,我決定在這篇文章中寫下我的研究結果。 要解決此問題,請按照以下步驟操作:
Tools > NuGet Package Manager > Package Manager Console
打開包管理器控制台,並將Microsoft.AspNet.WebApi.Client
包添加到解決方案。Install-Package Microsoft.AspNet.WebApi.Client -Version 5.2.7
System.Net.Http.Formatting.dll
文件應該存在於如下所示的目錄中。{root-solution-directory}\packages\Microsoft.AspNet.WebApi.Client.{package-version}\lib\net45\
手動添加對相關項目的引用。 右鍵單擊解決方案中 ASP.NET 項目中的“引用”部分,單擊“添加引用...”部分。 由於文件System.Net.Http.Formatting.dll
是擴展名,因此在直接搜索時不會像Microsoft.AspNet.WebApi.Client
包中的其他項一樣列出它。 因此,要手動添加 DLL 文件,請單擊“參考管理器”窗口底部的“瀏覽...”按鈕。 選擇第二步所示目錄中的System.Net.Http.Formatting.dll
文件,並選中復選框以將 DLL 文件包含在項目中。
在項目中包含System.Net.Http
命名空間,以在項目中使用此 DLL 提供的功能; using System.Net.Http.Formatting;
聲明在HttpContentExtensions
靜態類中可用。
using System.Net.Http;
可選:您可以通過安裝System.Net.Http.Formatting.Extension或WebApiDoodle.Net.Http.Formatting包之一並執行上述步驟來實現類似的解決方案。
Install-Package System.Net.Http.Formatting.Extension -Version 5.2.3
Install-Package WebApiDoodle.Net.Http.Formatting -Version 3.0.0-pre01
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.