在C#中实现按钮点击调用GET接口并在DataGridView展示数据
实现WinForm调用API并展示数据到DataGridView
1. 定义对应API返回数据的模型类
根据你的API返回的JSON结构创建实体类,属性要和返回字段一一对应(默认大小写敏感,可通过序列化配置调整):
public class ApiDataModel { public int Id { get; set; } public string Name { get; set; } public string Details { get; set; } // 按API实际返回字段添加更多属性 }
2. 创建全局HttpClient实例
在WinForm项目中添加静态类管理HttpClient,避免频繁创建释放资源:
public static class ApiClient { public static HttpClient Instance { get; } = new HttpClient { BaseAddress = new Uri("http://localhost:12345/api/"), Timeout = TimeSpan.FromSeconds(30) }; }
3. 编写按钮点击的异步逻辑
打开WinForm设计器,双击按钮生成Click事件,修改为异步方法:
private async void btnFetchData_Click(object sender, EventArgs e) { try { // 发送GET请求到目标接口 var response = await ApiClient.Instance.GetAsync("apiname/something"); // 验证请求是否成功,失败则抛出异常 response.EnsureSuccessStatusCode(); // 读取返回的JSON内容 var jsonContent = await response.Content.ReadAsStringAsync(); // 反序列化为模型集合(使用.NET自带的System.Text.Json) var dataList = System.Text.Json.JsonSerializer.Deserialize<List<ApiDataModel>>(jsonContent); // 将数据绑定到DataGridView dataGridView1.DataSource = dataList; } catch (HttpRequestException ex) { MessageBox.Show($"API请求失败:{ex.Message}"); } catch (System.Text.Json.JsonException ex) { MessageBox.Show($"数据解析失败:{ex.Message}"); } catch (Exception ex) { MessageBox.Show($"未知错误:{ex.Message}"); } }
4. 可选:使用Newtonsoft.Json序列化
如果你习惯用Newtonsoft.Json,先通过NuGet安装Newtonsoft.Json包,替换反序列化代码:
var dataList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ApiDataModel>>(jsonContent);
关键注意点
- 确保API控制台应用已启动,且监听端口为12345,否则会出现连接失败。
- DataGridView会自动根据模型属性生成列,如需自定义列,可在设计器添加列并设置
DataPropertyName对应模型属性名。 - 使用
async/await可避免UI线程阻塞,防止界面假死。
内容的提问来源于stack exchange,提问作者Lil s0uxz
相关产品推荐
相关产品推荐

