webAPI与winform之间的数据交互
首先是json的数据转化形式:
这里将对象转化成json形式,后续发给服务器接收: string json = JsonConvert.SerializeObject(cabinetAdd);
winform把接收到的json字符串,转回本来的样子:List<Cabinet> list = JsonConvert.DeserializeObject<List<Cabinet>>(text);
这里是webapi接收传过来的数据,因为webapi会自动解析传来的数据形式,所以只需要接收就好了。
public ActionResult<int> AddCabinet(Cabinet cabinet)
{
return 0;
}
winform与webapi交互数据:
//定义request并设置request的路径
WebRequest request = WebRequest.Create(url);
request.Method = "post";
//初始化request参数
int result;
string json = JsonConvert.SerializeObject(cabinetAdd);
byte[] data = Encoding.UTF8.GetBytes(json);
request.ContentType = "application/json";
request.ContentLength = data.Length;
request.Timeout = 60000;
//发送数据
try
{
Stream newStream = request.GetRequestStream();
newStream.Write(data, 0, data.Length);
WebResponse response = request.GetResponse();
newStream = response.GetResponseStream(); //这里是普通的json数据接收形式
StreamReader reader = new StreamReader(newStream, Encoding.UTF8);
result = Convert.ToInt32(reader.ReadToEnd());
reader.Close();
newStream.Close();
return result;
}
catch (Exception)
{
}
winform中查询列表所有数据:因为这里不需要传出数据给webapi,所以就直接引用flurl形式接收,并且将接收的json格式的数据转换成list集合形式。
public List<Cabinet> AllCabinetData()
{
Task<string> task = Task.Run(async () => await "https://localhost:44358/Cabinet/GetAllCabinetsByJson".GetStringAsync());
string text = task.Result;
List<Cabinet> list = JsonConvert.DeserializeObject<List<Cabinet>>(text);
return list;
}
webapi中查询数据给winform:
public ActionResult<string> GetAllCabinetsByJson()
{
List<Cabinet> cabinetList = new List<Cabinet>();
cabinetList = freeSqlInstance.Select<Cabinet>().OrderByDescending(a => a.Name).ToList();
string json = JsonConvert.SerializeObject(cabinetList);//将集合json序列化
return json;
}
感想:本来是winform直接与数据库交互,但是加了一层webapi,这个时候就要处理数据交互的问题了。webapi处理数据问题,winform只负责从界面传数据给webapi,不考虑数据处理问题。
还有就是winform拿到webapi的数据形式是什么,怎么才能把数据传到webapi,又怎么把数据从webapi给拿到。这些问题想了很久。
还有要注意的就是:这里的链接,一定要跟webapi那边测试能否访问,能访问就是winform这边传输出了问题,问题可以找到链接是否正确。httpGet和httpPost方法一定要对应上,不然winform是访问不到的。
再者就是访问的错误码提示问题了,2xx,3xx,4xx,5xx问题了。
200:服务器响应正常。
400:无法找到请求的资源。
401:访问资源的权限不够。
403:没有权限访问资源。
404:需要访问的资源不存在。
414:请求的URL太长。
500:服务器内部错误。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效