ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

webAPI与winform之间的数据交互

2022-08-20 14:34:33  阅读:172  来源: 互联网

标签:webAPI webapi 数据 request json newStream 交互 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:服务器内部错误。

标签:webAPI,webapi,数据,request,json,newStream,交互,winform
来源: https://www.cnblogs.com/wen-chen/p/16607598.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有