Winform使用HttpClient调用webApi接口

1、右键解决方案=》添加=》新建项目=》选择Windows窗体,填写你的项目名称
在这里插入图片描述
2、这是我事先准备好的webapi,如何创建webapi项目可以看我以前的文章
在这里插入图片描述
3、这里介绍两种方法,第一个简单直接调用
在这里插入图片描述

var httpClient = new HttpClient();
            var url = new Uri("http://localhost:45563/api/test/get1");
            var response = httpClient.GetAsync(url).Result;
            var data = response.Content.ReadAsStringAsync().Result;
			textBox1.Text = data;

            var url2 = new Uri("http://localhost:45563/api/test/get2?str=你好");
            var response2 = httpClient.GetAsync(url2).Result;
            var data2 = response2.Content.ReadAsStringAsync().Result;
            textBox2.Text = data2;

运行结果如下
在这里插入图片描述
4、第二种将http调用相关代码封装成方法,将httpclient对象定义为成员变量,并且给定主机地址,后面传入api时就可以省略
在这里插入图片描述
5、将httpclient相关代码封装
在这里插入图片描述

/// <summary>
        /// Post请求
        /// </summary>
        /// <typeparam name="TResult">返回参数的数据类型</typeparam>
        /// <param name="url">请求地址</param>
        /// <param name="data">传入的数据</param>
        /// <returns></returns>
        public TResult Post<TResult>(string url, object data)
        {
            try
            {
                var jsonData = JsonConvert.SerializeObject(data);
                HttpContent content = new StringContent(jsonData);
                content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
                HttpResponseMessage res = client.PostAsync(url, content).Result;
                if (res.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    string resMsgStr = res.Content.ReadAsStringAsync().Result;
                    var result = JsonConvert.DeserializeObject<TResult>(resMsgStr);
                    return result;
                }
                else
                {
                    MessageBox.Show(res.StatusCode.ToString());
                    return default;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return default;
            }
        }

更多封装方法的写法可以参考:https://www.cnblogs.com/hyx1229/p/15752124.html
6、post1方法需要用到的类
在这里插入图片描述

public class TestModel
    {
        public int Num1 { get; set; }
        public int Num2 { get; set; }
        public int Sum { get; set; }
    }

7、然后就调用我们的方法
在这里插入图片描述

var model = new TestModel { Num1 = 1, Num2 = 10 };
            var data3 = Post<TestModel>("api/test/post1", model);
            textBox3.Text = data3.Sum.ToString();

结果如下
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐