HttpClient
新しいオブジェクト (新しい Web API の一部として) を使用する Web 上の多くの例で、メソッドが必要であることがわかりますHttpContent.ReadAsAsync<T>
。ただし、MSDNはこの方法について言及しておらず、IntelliSense もそれを見つけていません。
それはどこに行きましたか、どうすれば回避できますか?
HttpClient
新しいオブジェクト (新しい Web API の一部として) を使用する Web 上の多くの例で、メソッドが必要であることがわかります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);
拡張メソッドを書くことができます:
public static async Task<Tout> ReadAsAsync<Tout>(this System.Net.Http.HttpContent content) {
return Newtonsoft.Json.JsonConvert.DeserializeObject<Tout>(await content.ReadAsStringAsync());
}
私は同じ問題を抱えていましたが、このスレッドの回答は問題を解決するのに十分ではありませんでした. このため、この投稿で私の研究結果を書くことにしました。この問題を解決するには、次の手順に従います。
Tools > NuGet Package Manager > Package Manager Console
、Visual Studio IDE に移動してパッケージ マネージャー コンソールを開き、パッケージ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 ファイルを手動で追加するには、[参照マネージャー]ウィンドウの下部にある [参照... ] ボタンをクリックします。2 番目の手順で示したディレクトリ内のファイルを選択し、チェック ボックスをオンにして DLL ファイルをプロジェクトに含めます。System.Net.Http.Formatting.dll
System.Net.Http
プロジェクトでこの DLL によって提供される機能を使用するには、プロジェクトに名前空間を含めます。using System.Net.Http.Formatting;
宣言はHttpContentExtensions
静的クラス内で使用できます。
using System.Net.Http;
オプション: System.Net.Http.Formatting.ExtensionまたはWebApiDoodle.Net.Http.Formattingパッケージのいずれかをインストールし、上記の手順に従うことで、同様のソリューションを実現できます。