我有一个
WEB API
,它有 CRUD
操作。为了进行测试,我创建了一个Console application
。创建和获取所有详细信息工作正常。现在我想通过使用 id
字段来获取产品。下面是我的代码
static HttpClient client = new HttpClient();
static void ShowProduct(Product product)
{
Console.WriteLine($"Name: {product.Name}\tPrice: {product.Price}\tCategory: {product.Category}", "\n");
}
static async Task<Product> GetProductAsyncById(string path, string id)
{
Product product = null;
HttpResponseMessage response = await client.GetAsync(path,id);
if (response.IsSuccessStatusCode)
{
product = await response.Content.ReadAsAsync<Product>();
}
return product;
}
case 3:
Console.WriteLine("Please enter the Product ID: ");
id = Convert.ToString(Console.ReadLine());
// Get the product by id
var pr = await GetProductAsyncById("api/product/", id);
ShowProduct(pr);
break;
在
client.GetAsync(path,id)
,id 给我错误cannot convert string to system.net.http.httpcompletionoption
。为此,我查阅了所有与之相关的文章。但还是找不到正确的解决办法。
任何帮助将不胜感激
您收到此错误是因为没有方法
GetAsync()
接受第二个参数作为 string
。
另外,在执行
GET
请求时,您应该在 url 中传递 id
,即,如果您的 api url 是这样的:http://domain:port/api/Products
,那么您的请求 url 应该是 http://domain:port/api/Products/id
,其中 id
是您的产品 id想要得到。
将您的呼叫更改为
GetAsync()
:
HttpResponseMessage response = await client.GetAsync(path + "/" +id);
或者如果是 C# 6 或更高版本:
HttpResponseMessage response = await client.GetAsync($"{path}/{id}");