![](/img/trans.png)
[英]How do i get data from a web api into a c# windows forms app class
[英]Get data from Web Api in C#
我正在使用 Web Api 和 controller 中的以下数据。
public IEnumerable<string> Get()
{
return new string[] { "Item1", "Item2s", "Item3", "Item4", "Item5" };
}
我想从应用程序中的 Web Api 获取此数据。 我使用这段代码从另一个 controller 获取数据:
public IEnumerable<Items> GetItems()
{
return repository.GetItems();
}
上面显示了 controller 代码,它获取了 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);
}
那这个呢 :
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);
}
您将需要更新 JsonConvert.DeserializeObject 方法调用以将响应解析为字符串 [] 而不是动态。 您可以通过将泛型类型参数从 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 的响应解析为字符串 [] 并为数组中的每个字符串创建一个新的项目 object。 您还需要更新项目 class 的构造函数以接受单个字符串作为参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.