Winform使用HttpClient调用webApi接口

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();

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

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Winform 是一种常见的 Windows 桌面应用程序开发平台,而 WebAPI 是一种基于 HTTP 的 Web 服务框架,两者可以很好地结合,实现桌面应用程序向 Web 服务发送请求获取数据的功能。 在 Winform调用 WebAPI 可以使用 .NET 的 HttpWebRequest 或 HttpClient 类,封装 HTTP 请求并发送给 Web 服务。在发送请求之前,需要先确定 WebAPI 的 URL 地址,以及请求所要传递的参数。可以使用 HttpClient 的 PostAsync 或 GetAsync 方法发送请求,接收 Web 服务返回的数据并处理。在接收到 WebAPI 的响应后,可以使用 JSON 序列化工具将数据反序列化为 .NET 对象,方便在 Winform 窗体中进行显示或进一步处理。 为了让 Winform 程序与 WebAPI 通信更加简便和高效,可以使用第三方的 RESTful API 框架,如 RestSharp 或 ServiceStack。这些框架可以帮助 Winform 应用程序快速、方便地与 WebAPI 进行通信,简化了操作流程,在 Winform 程序中使用起来更加便捷。 总之,Winform 调用 WebAPI 是一种常见且实用的开发方式,可以帮助开发人员快速获取 Web 服务数据或执行业务操作,提高应用程序的功能和效率。 ### 回答2: Winform 调用 Web API 是一个常见的操作,可以通过以下步骤实现。 首先,在 Winform 中添加 Web 请求的相关代码。通过 HttpClient 类,我们可以轻松地向 Web API 发送 HTTP 请求。下面是一个示例代码,用于在 Winform调用 Web API 中的一个方法: ``` HttpClient client = new HttpClient(); client.BaseAddress = new Uri("http://localhost:5000/"); HttpResponseMessage response = await client.GetAsync("api/values"); if (response.IsSuccessStatusCode) { string result = await response.Content.ReadAsStringAsync(); textBox1.Text = result; } else { textBox1.Text = "Error"; } ``` 在以上代码中,我们首先创建了一个 HttpClient 实例,并指定其 BaseAddress 属性为 Web API 的地址。然后,我们使用 GetAsync 方法向 Web API 发送请求,并等待响应。如果请求成功,我们将响应内容读取为字符串,并在 Winform 的文本框中显示。 在实际的开发中,我们还需要根据具体的需求和 Web API 的设计,设置请求头、请求参数等相关信息。 总的来说,Winform 调用 Web API 是一种方便、快捷、灵活的方法,可以有效地实现前后端分离,提高应用程序的易用性和可扩展性。 ### 回答3: Winform是一种桌面应用程序,它提供了丰富的用户界面和交互功能。WebAPI则是一种基于HTTP协议的状态无关的服务,它可以用来向任何客户端(包括Winform应用程序)提供数据或者执行某些操作。 要在Winform调用WebAPI,需要使用HttpClient类来发送请求和接收响应。首先需要创建一个HttpClient实例,通过它可以发起各种类型的HTTP请求(如GET、POST、PUT、DELETE等)。同时还可以为每个请求设置必要的header和query参数,以及接收响应的格式(如JSON或XML)。 对于需要进行身份验证或者授权的请求,可以使用HttpClient的Credential属性来指定相应的用户名和密码。此外,还可以使用HttpClient的Timeout属性来设置超时时间,以避免请求过程中出现等待超时的问题。 在收到WebAPI的响应后,还需要对其进行解析和处理。HttpContent类提供了许多方法来获取返回的数据(如字符流、字节数组或者字符串)和解析JSON或XML格式的数据。可以将这些数据转换为相应的格式,然后在Winform应用程序中进行显示或其他操作。 总之,在Winform调用WebAPI需要使用HttpClient类发起请求和接收响应,并使用HttpContent类对返回的数据进行解析和处理。这样可以实现Winform应用程序与WebAPI的通信,从而获取所需的数据或执行某些操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值