.net 用C#从Web API获取数据

3pmvbmvn  于 2023-01-10  发布在  .NET
关注(0)|答案(2)|浏览(208)

我正在使用一个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中指定的项目列表。我如何修改下面的代码以从字符串[]获取数据?

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);
            }
cigdeys3

cigdeys31#

这个怎么样

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);
}
qni6mghb

qni6mghb2#

您需要更新JsonConvert.DeserializeObject方法调用,以将响应分析为string []而不是dynamic。为此,可以将泛型类型参数从dynamic更改为string []。
下面是更新后的代码:

Copy code
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 the content as a string array
    string[] itemsArray = JsonConvert.DeserializeObject<string[]>(content);

    // Create a new Items object for each item in the array
    foreach (string item in itemsArray)
    {
        var ItemData = new Items(item);
        items.Add(ItemData);
    }
}

这将把来自Web API的响应解析为string [],并为数组中的每个字符串创建一个新的Items对象。您还需要更新Items类的构造函数,以接受单个字符串作为参数。

相关问题