web-dev-qa-db-ja.com

HttpContent.ReadAsAsyncはどこにありますか?

私は(新しいWeb APIの一部として)新しいHttpClientオブジェクトを使ったWeb上のたくさんの例で、HttpContent.ReadAsAsync<T>メソッドがあるべきであることを見ます。ただし、 MSDN はこのメソッドについて言及していませんし、IntelliSenseもそれを検出していません。

それはどこに行きましたか、そしてどのように私はそれを回避しますか?

232
David Pfeffer

それは拡張メソッドであるように見えます(System.Net.Http.Formatting内):

HttpContentExtensionsクラス

更新:

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

System.Net.Http.Formatting NuGetパッケージのページによると、System.Net.Http.Formattingパッケージは現在レガシーであり、代わりに にあるMicrosoft.AspNet.WebApi.Clientパッケージにあります。ここNuGet

369
J...

私は同じ問題を抱えているので、私は単に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);
63
rosta

既にNewtonsoft.Jsonを使用していて、Microsoft.AspNet.WebApi.Clientをインストールしたくない場合は、次のようにします。

 var myInstance = JsonConvert.DeserializeObject<MyClass>(
   await response.Content.ReadAsStringAsync());
20
Martin Brandl

プロジェクトを右クリックして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());
}
3
Vasya Milovidov

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に古い参照を追加するという罠に陥らないでください。

0
Tom John