私は(新しいWeb APIの一部として)新しいHttpClient
オブジェクトを使ったWeb上のたくさんの例で、HttpContent.ReadAsAsync<T>
メソッドがあるべきであることを見ます。ただし、 MSDN はこのメソッドについて言及していませんし、IntelliSenseもそれを検出していません。
それはどこに行きましたか、そしてどのように私はそれを回避しますか?
それは拡張メソッドであるように見えます(System.Net.Http.Formatting内):
更新:
PM>インストールパッケージMicrosoft.AspNet.WebApi.Client
System.Net.Http.Formatting NuGetパッケージのページによると、System.Net.Http.Formatting
パッケージは現在レガシーであり、代わりに にあるMicrosoft.AspNet.WebApi.Client
パッケージにあります。ここNuGet 。
私は同じ問題を抱えているので、私は単に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());
プロジェクトを右クリックしてManage NuGet PackagesでMicrosoft.AspNet.WebApi.Clientを検索し、インストールすると、拡張メソッドにアクセスできるようになります。
拡張メソッドを書くことができます:
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をインストールした後でこれが利用できない場合、これを数回ヒットしてたくさんの提案に従ってください。手動でソリューションのpackagesフォルダから参照を次の場所に追加します。
\Microsoft.AspNet.WebApi.Client.5.2.6\lib\net45\System.Net.Http.Formatting.dll
そして、System.Net.Http.Formatting.dll NuGetに古い参照を追加するという罠に陥らないでください。