Próbuję przejść tutorial explaining how to access a WebAPI service w VS2013 (.NET 4.5.1) i pojawiają się błędy kompilacji z linii:Jak korzystać z HttpContentExtensions.ReadAsAsync <T>()?
Product product = await response.Content.ReadAsAsync<Product>();
response = await client.PostAsJsonAsync("api/products", gizmo);
i
response = await client.PutAsJsonAsync(gizmoUrl, gizmo);
mam odwoływać System.Net. Http który apparently zawiera trzy metody, których nie można skompilować: ReadAsAsync(), PostAsJsonAsync() i PutAsJsonAsync(). Mimo że klasa rozszerzeń nie pojawia się w ObjectBrowser dla zestawu, więc nie jestem przekonany, że mam odpowiednią wersję (wersja, którą mam, to 4.0.30319.18402).
Używam najnowszego pakietu nuGet Microsoft.AspNet.WebApi.Client (5.1.2), więc myślę, że mam wszystko, co jest wymagane.
Czy ktoś może zrozumieć, dlaczego kod nie kompiluje lub co mi brakuje:
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);
}
}
}
}
}
Dzięki.
możliwy duplikat [Gdzie jest HttpContent.ReadAsAsync?] (Http://stackoverflow.com/questions/10399324/where-is-httpcontent-readasasync) –