簡體   English   中英

我如何使用HttpContentExtensions.ReadAsAsync <T> ()?

[英]How can I use HttpContentExtensions.ReadAsAsync<T>()?

我正在嘗試通過一個教程來解釋如何在VS2013(.net 4.5.1)中訪問WebAPI服務 ,並且我得到了行的編譯錯誤:

Product product = await response.Content.ReadAsAsync<Product>();
response = await client.PostAsJsonAsync("api/products", gizmo);

response = await client.PutAsJsonAsync(gizmoUrl, gizmo);

我引用了System.Net.Http,它顯然包含三個無法編譯的方法:ReadAsAsync(),PostAsJsonAsync()和PutAsJsonAsync()。 雖然擴展類沒有出現在程序集的ObjectBrowser中,所以我不相信我有正確的版本(我的版本是4.0.30319.18402)。

我正在使用最新的nuGet Microsoft.AspNet.WebApi.Client包(5.1.2),所以我認為我已經擁有了所需的一切。

任何人都可以看到為什么代碼不編譯或我缺少什么:

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;

namespace WebApiClient
{
class Program
{
    static void Main()
    {
        RunAsync().Wait();
    }
    static async Task RunAsync()
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("http://localhost:54122/");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            // HTTP GET
            HttpResponseMessage response = await client.GetAsync("api/products/1");
            if (response.IsSuccessStatusCode)
            {
                //***********
                Product product = await response.Content.ReadAsAsync<Product>();
                //***********
                Console.WriteLine("{0}\t${1}\t{2}", product.Name, product.Price, product.Category);
            }

            // HTTP POST
            var gizmo = new Product() { Name = "Gizmo", Price = 100, Category = "Widget" };

            //***********
            response = await client.PostAsJsonAsync("api/products", gizmo);
            //***********
            if (response.IsSuccessStatusCode)
            {
                Uri gizmoUrl = response.Headers.Location;

                // HTTP PUT
                gizmo.Price = 80;   // Update price

                //***********
                response = await client.PutAsJsonAsync(gizmoUrl, gizmo);
                //***********

                // HTTP DELETE
                response = await client.DeleteAsync(gizmoUrl);
            }
        }
    }
}
}

謝謝。

結果我需要一個對System.Net.Http.Formatting的引用。

我認為這是nuGet Microsoft.AspNet.WebApi.Client包的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM