WinFrom调用webapi接口另一个方法及其应用实例

ops/2024/11/30 8:01:30/

1.调用接口方法

代码如下:

public class WebAPI{#region WebAPI调用       public async Task<string> Call_Webapi(string Url, string Json)   //url传入的是接口名称,json传入的是接口参数{string responseBody = string.Empty; //responseBody返回参数using (HttpClient client = new HttpClient()){try{// 设置请求内容类型为 JSONvar content = new StringContent(Json, Encoding.UTF8, "application/json");// 发送 POST 请求HttpResponseMessage response = await client.PostAsync(Url, content);// 确保请求成功response.EnsureSuccessStatusCode();// 读取响应内容responseBody = await response.Content.ReadAsStringAsync();}catch (HttpRequestException ex){responseBody = string.Empty;}}return responseBody;}/// <summary>/// 获取数据/// </summary>/// <param name="wo"></param>/// <returns></returns>public async Task<Result> GetWoInfo(string wo){int input = 0;int target = 0;try{string Order = wo;string URL = "http://(自己的服务器地址)/GetWOInfo";             string JSON = "{\"data\":\"" + Order + "\"}";string responseBody = await Call_Webapi(URL, JSON);//以下为解析返回的josn字符串,请先引用BIN目录里的Newtonsoft.Json.dlldynamic obj = JsonConvert.DeserializeObject(responseBody);string result = obj.Result;  //读取Result返回值string Message = obj.Message;//读取Message返回值if (result == "0")  //等于0时,表示工单数据正确返回,并且Resource里有数据{//解析Resource里的数据,获取PART_NO,CUST_PART_NO等你想要取的值target = obj.Resource.TARGET_QTY;input = obj.Resource.INPUT_QTY;                }else  //不等于0时,表示有错误,或者无数据,那么,请抛出这个错误{MessageBox.Show(Message);                   }}catch (Exception ex){MessageBox.Show(""+ex+"");             }return new Result { target = target, input = input };}//上传数据public async Task<string> SaveTestLog_SPOT(string workNo, string line, string station, string outerBarcode, string internalBarcode, string pcbaBarcode, string cellBarcode, string carrierBarcode, string cellLot, string vendor){var result1 = "";try{string Line = line;  //线别string testtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");  //测试时间string Order = workNo;//工单string ExternalBarcode = outerBarcode; //外码string InternalBarcode = internalBarcode;//内码;string PCB = pcbaBarcode;string CELLS = cellBarcode; //cell中间以逗号隔开               string tool = carrierBarcode;string URL = "http://(自己的服务器地址)/Api_SaveTestLog_WO";         string JSON = "{\"line\":\"" + Line + "\",\"testtime\":\"" + testtime + "\",\"Order\":\"" + Order + "\", " +"\"ExternalBarcode\":null,\"InternalBarcode\":\"" + InternalBarcode + "\",\"PCB\":\"" + PCB + "\",\"tool\":\"" + tool + "\"" +",\"cell\":\"" + CELLS + "\"}";string responseBody = await Call_Webapi(URL, JSON);//正常返回格式 :{"Result":"0","Message":"OK"}//错误返回格式:{"Result":"999","Message":"错误信息"}//以下为解析返回的josn字符串,请先引用BIN目录里的Newtonsoft.Json.dlldynamic obj = JsonConvert.DeserializeObject(responseBody);string result = obj.Result;  //读取Result返回值string Message = obj.Message;//读取Message返回值if (result == "0")  //等于0时,表示工单数据正确返回,并且Resource里有数据{result1 = "OK";}else  //不等于0时,表示有错误,或者无数据,那么,请抛出这个错误{result1 = "NG-" + Message;}}catch (Exception ex){result1 = "NG - " + ex.Message;}if (result1 != "OK"){              MessageBox.Show("上傳MES異常:" + result1);}return result1;}#endregion}public class Result{public int target { get; set; }public int input { get; set; }}

提示:该类需要引用Newtonsoft.Json.dll文件

2.实例

创建一个winfrom项目,创建两个button和一个richTextBox,如下图:

代码如下:
 

  public partial class Form1 : Form{public Form1(){InitializeComponent();}public WebAPI webapi = new WebAPI();private async void button1_Click(object sender, EventArgs e){//获取数据var result = await webapi.GetWoInfo("xxxxx");var target = result.target;var intput = result.input;richTextBox1.Text = "当前工单总量:"+ target + ",当前工单生产数:"+ intput + "";}private async void button2_Click(object sender, EventArgs e){//上传数据并反馈信息string workNo = "xxxxx";string line = "xxxx";string station = "xxxx";string pcba1 = "xxxx";string cell3 = "xxxx,xxxx";string cellLot = "";string vendor = "";var   mesResult1 = await webapi.SaveTestLog_SPOT(workNo, line, station, "", pcba1, pcba1, cell3, "", cellLot, vendor);richTextBox1.Text = mesResult1;}}


http://www.ppmy.cn/ops/137872.html

相关文章

DM达梦管理工具拖出空白区块,无法关闭

1. 出现问题&#xff1a;DM达梦管理工具拖出空白区块&#xff0c;无法关闭。 2. 解决方法 新建查询页&#xff0c;把查询页拖到空白区块里&#xff0c;完全覆盖空白区块。之后空白区块会变成查询页&#xff0c;右上角会出现叉号&#xff0c;点击叉号关闭就行。 3. 后记 达梦…

用户密码存储方式的发展史

文章目录 一、裸奔时代——纯文本存储二、远古时代&#xff1a;加密存储三、近代&#xff1a;单向哈希算法四、哈希加盐&#xff1a;穿上迷彩服两种加盐做法1. 随机生成盐并保存2. 固定算法生成盐并且不保存 五、21世纪&#xff1a;自适应单项函数未来趋势 一、裸奔时代——纯文…

Docker for Everyone Plus——Unbreakable!

修改一下telnet的端口配置&#xff0c;访问第二小问&#xff0c;sudo -l命令允许提权执行的命令&#xff1a; 发现多了这两个限制--security-optno-new-privileges&#xff0c;表明docker run命令必须带上--security-optno-new-privileges参数&#xff0c;这可以防止通过suid机…

154. tweenjs相机运动动画

下面给大家讲解如何通过tweenjs实现threejs相机动画&#xff0c;具体说就是使用tweenjs改变相机的位置camera.position和视线方向。 相机飞行动画(从一个点飞到另一个点) 引入tweenjs&#xff0c;并在requestAnimationFrame动画中执行TWEEN.update();更新。 import TWEEN fr…

CSS 属性计算过程

CSS 属性计算过程 你是否了解 CSS 的属性计算过程呢&#xff1f; 有的同学可能会讲&#xff0c;CSS属性我倒是知道&#xff0c;例如&#xff1a; p{color : red; }上面的 CSS 代码中&#xff0c;p 是元素选择器&#xff0c;color 就是其中的一个 CSS 属性。 但是要说 CSS 属…

【Docker】部署nginx

docker部署nginx docker部署nginx镜像加速器1、拉取nginx镜像2、创建nginx容器3、浏览器访问 docker部署nginx 镜像加速器 备注&#xff1a;阿里云镜像加速地址 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors可用的镜像源&#xff1a; https://https://reg…

使用PyTorch在AMD GPU上进行INT8量化实现精简化的LLM推理

Leaner LLM Inference with INT8 Quantization on AMD GPUs using PyTorch — ROCm Blogs 随着大型语言模型&#xff08;LLMs&#xff09;规模达到数千亿参数&#xff0c;我们在这些庞大模型中表示数据的方式极大地影响了训练所需的资源&#xff08;例如&#xff0c;用于推理的…

二阶信息在机器学习中的优化;GPTQ算法利用近似二阶信息;为什么要求近似二阶(运算量大,ReLu0点不可微)

目录 二阶信息在机器学习中的优化 GPTQ算法利用近似二阶信息来找到合适的量化权重 详细解释 举例说明 近似二阶信息 定义与解释 举例说明 总结 为什么要求近似二阶(运算量大,ReLu0点不可微) 计算复杂性 精度需求 实际应用场景中的权衡 二阶信息在机器学习中的优…