自学内容网 自学内容网

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

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
                {
                    // 设置请求内容类型为 JSON
                    var 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.dll
                dynamic 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.dll
                dynamic 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;
        }
    }


原文地址:https://blog.csdn.net/qq_42711010/article/details/144064999

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!