331

HttpClient新しいオブジェクト (新しい Web API の一部として) を使用する Web 上の多くの例で、メソッドが必要であることがわかりますHttpContent.ReadAsAsync<T>。ただし、MSDNはこの方法について言及しておらず、IntelliSense もそれを見つけていません。

それはどこに行きましたか、どうすれば回避できますか?

4

8 に答える 8

505

拡張メソッドのようです (System.Net.Http.Formatting 内):

HttpContentExtensions クラス

アップデート:

PM> インストール パッケージ Microsoft.AspNet.WebApi.Client

System.Net.Http.Formatting NuGet パッケージ ページによると、System.Net.Http.Formattingパッケージは現在レガシーであり、代わりにNuGet でMicrosoft.AspNet.WebApi.Client利用可能なパッケージで見つけることができます。

于 2012-05-01T14:50:25.650 に答える
71

私は同じ問題を抱えているので、単純に 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);
于 2014-06-05T05:18:43.233 に答える
15

拡張メソッドを書くことができます:

public static async Task<Tout> ReadAsAsync<Tout>(this System.Net.Http.HttpContent content) {
    return Newtonsoft.Json.JsonConvert.DeserializeObject<Tout>(await content.ReadAsStringAsync());
}
于 2019-01-10T23:48:12.133 に答える
0

私は同じ問題を抱えていましたが、このスレッドの回答は問題を解決するのに十分ではありませんでした. このため、この投稿で私の研究結果を書くことにしました。この問題を解決するには、次の手順に従います。

  1. NuGet を使用して、 Microsoft.AspNet.WebApi.Clientパッケージをプロジェクトに追加します。ASP.NET ソリューション内でTools > NuGet Package Manager > Package Manager Console、Visual Studio IDE に移動してパッケージ マネージャー コンソールを開き、パッケージMicrosoft.AspNet.WebApi.Clientをソリューションに追加します。
Install-Package Microsoft.AspNet.WebApi.Client -Version 5.2.7
  1. インストール後、システムに拡張 DLL が存在することを確認します。System.Net.Http.Formatting.dllファイルは、最初の手順の結果として、以下に示すディレクトリに存在する必要があります。
{root-solution-directory}\packages\Microsoft.AspNet.WebApi.Client.{package-version}\lib\net45\
  1. 関連するプロジェクトへの参照を手動で追加します。ソリューション内の ASP.NET プロジェクトの [参照] セクションを右クリックし、[参照の追加...]セクションをクリックします。ファイルは拡張子であるため、パッケージSystem.Net.Http.Formatting.dll内の他のアイテムのように直接検索しても表示されません。Microsoft.AspNet.WebApi.Clientしたがって、DLL ファイルを手動で追加するには、[参照マネージャー]ウィンドウの下部にある [参照... ] ボタンをクリックします。2 番目の手順で示したディレクトリ内のファイルを選択し、チェック ボックスをオンにして DLL ファイルをプロジェクトに含めます。System.Net.Http.Formatting.dll

  2. System.Net.Httpプロジェクトでこの DLL によって提供される機能を使用するには、プロジェクトに名前空間を含めます。using System.Net.Http.Formatting;宣言はHttpContentExtensions静的クラス内で使用できます。

using System.Net.Http;

オプション: System.Net.Http.Formatting.ExtensionまたはWebApiDoodle.Net.Http.Formattingパッケージのいずれかをインストールし、上記の手順に従うことで、同様のソリューションを実現できます。

于 2021-11-01T18:15:36.257 に答える