通过id字段获取所有产品

问题描述 投票:0回答:1

我有一个

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
。为此,我查阅了所有与之相关的文章。但还是找不到正确的解决办法。

任何帮助将不胜感激

c# asp.net-web-api visual-studio-2015 console-application dotnet-httpclient
1个回答
3
投票

您收到此错误是因为没有方法

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}");
© www.soinside.com 2019 - 2024. All rights reserved.