【问题标题】:Get data from Web Api in C#从 C# 中的 Web Api 获取数据
【发布时间】:2022-05-12 10:04:05
【问题描述】:

我在控制器中使用带有以下数据的 Web Api。

 public IEnumerable<string> Get()
        {
            return new string[] { "Item1", "Item2s", "Item3", "Item4", "Item5" };
        }

我想从应用程序中的 Web Api 获取这些数据。我使用此代码从另一个控制器获取数据:

public IEnumerable<Items> GetItems()
        {
            return repository.GetItems();
        }

上面显示了控制器代码,它获取 web api 中指定的项目列表。 如何更改以下代码以从 string[] 获取数据?

  HttpClient client = new HttpClient();
            HttpResponseMessage response = await client.GetAsync("http://localhost:1234/api/items");

            var items = new List<Items>();

            if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();

                // Parse 1 Product from the content
                var ItemsSet= JsonConvert.DeserializeObject<dynamic>(content);

               // Data from Api 
                var ItemData = new Items
                (
                (string)ItemsSet[0], 
                (string)ItemsSet[1],
                (string)ItemsSet[2],
                (string)ItemsSet[3],
                (string)ItemsSet[4]


                );

                items.Add(ItemData);
            }

【问题讨论】:

    标签: c# .net visual-studio-2012 asp.net-web-api


    【解决方案1】:

    这个呢:

    HttpClient client = new HttpClient();
    HttpResponseMessage response = await client.GetAsync("http://localhost:1234/api/items");
    
    var Items = new List<Items>();
    
    if (response.IsSuccessStatusCode)
    {
        IEnumerable<string> categories = await response.Content.ReadAsAsync<IEnumerable<string>>();
    
        var ItemData = new Items
                (
                    // Use this category list to initialize your Items
                );
    
        items.Add(ItemData);
    }
    

    【讨论】:

    • 这不起作用,我也对代码进行了编辑,我犯了一个错误。应该是items.Add(ItemData);
    • 几个,因为我必须将数组值添加到 Items 对象。因此new List&lt;Items&gt;();
    • 如果 Items ,你想如何将字符串集合转换为集合?如果我很了解您,您的服务会返回 IEnumerable,并且这些字符串会成为您调用方法中的 Items 吗?每个字符串值有一个项目吗?
    • IEnumerable 实际上使用 linq 查询获取值列表。它应该返回列中所有值的列表。 public IEnumerable&lt;string&gt; Get() { return repository.GetAllProducts() .Select(p =&gt; p.Category).Distinct(); } 我想用 linq 查询中检索到的列中的所有值填充 ItemData 变量。此外,请参阅代码以进行更正的编辑。即var ItemData = new Items
    • 我觉得令人困惑的是,您获取类别,然后在收到响应时设置IdNameImagePath 等属性。如果它更接近您的需要,请查看我编辑的答案。
    猜你喜欢
    • 2018-09-01
    • 2021-11-27
    • 2018-03-18
    • 1970-01-01
    • 2020-08-17
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多