【发布时间】:2016-10-15 11:59:15
【问题描述】:
我在网上查看示例并找到了一个关于检索使用 C# WEB API 服务和 C# 控制台应用程序作为客户端的产品的教程,但是,该教程在服务中定义了一个函数来获取所有产品,但是它没有告诉你如何从客户端调用它:
public IEnumerable<Product> GetAllProducts()
{
...
}
其他 CRUD 方法使用 IHttpActionResult 声明,所以我很困惑如何调用它。
所以在我的客户中,我盲目地尝试调用以下操作,这显然是不正确的:
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:59888/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// HTTP GET ALL
HttpResponseMessage response = await client.GetAsync("api/products");
if (response.IsSuccessStatusCode)
{
List<Model.Product> products = await.response.Content.ReadAsAsync<IEnumerable<Model.Product>();
}
}
这给了我一个语法错误。那么我该如何编码呢?我需要更改服务器或客户端代码还是两者都更改?
对于单个产品,代码是这样的:
// HTTP GET Specific Product
response = await client.GetAsync("api/products/1");
if (response.IsSuccessStatusCode)
{
Model.Product product = await response.Content.ReadAsAsync<Model.Product>();
}
而服务器是:
public IHttpActionResult GetProduct(int id)
{
var product = repository.GetByID(id);
if (product != null)
return Ok(product);
else
return NotFound();
}
【问题讨论】:
标签: c# asp.net-web-api2