在浏览器上,我可以得到这样的数据。(JSON格式)x1c 0d1x
我想在WinForm上执行HTTP请求和get
数据。我怎样才能使它像下面的图片一样?
我已经参考了一些相关的信息。但是我对如何开始感到困惑(比如我应该在Form 1. cs中编写代码还是添加新类,我应该创建模型...)
How to make HTTP POST web request
How to return async HttpClient responses back to WinForm?
我可以使用HttpClient方法吗?谢谢您的回答和建议。
(New编辑)
https://www.youtube.com/watch?v=PwH5sc-Q_Xk
我也从这个视频中学习,但我得到了错误消息.
没有MediaTypeFormatter可用于从媒体类型为'text/html'的内容中读取类型为'IEnumerable“1'的对象。
我的代码
表单1.cs
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Net.Http;
using System.Net.Http.Formatting;
namespace _123
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
HttpClient clint = new HttpClient();
clint.BaseAddress = new Uri("http://localhost:8888/");
HttpResponseMessage response = clint.GetAsync("PersonList").Result;
var emp = response.Content.ReadAsAsync<IEnumerable<ImgList>>().Result;
dataGridView1.DataSource = emp;
}
}
}
ImgList.cs(这是模型吗?)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
namespace _123
{
class ImgList
{
public int id { get; set; }
public string name { get; set; }
public int age { get; set; }
}
}
2条答案
按热度按时间bvjxkvbb1#
在浏览器上,我可以得到这样的数据。(JSON格式)
这意味着您正在进行一个
HttpGet
调用,没有参数,正如我从Url中看到的那样,并且在任何情况下都没有HttpBody。下面是使用C#进行Http Get调用的简单代码:
工作原理
HttpClient
是包含api服务地址的对象HttpResponseMessage
用于提取字符串,使用NewtonSoft Json将其反序列化为List<Person>
请注意,
Async
调用意味着包含方法应为Async
预期
Person
类的架构使用反序列化填充List<Person>
:调用代码的位置- Winform /添加新类
标准机制是创建一个通用的帮助器库/类,所有的API调用都是从这个库/类中完成的,结果也是从这个库/类中获取的,winform应该只进行数据绑定,而不是处理代码
edqdpe6u2#
使用Json和序列化模型中的数据,以及分配模型中的表单字段。