WPF怎么通过RestSharp向后端发请求

ops/2024/11/9 4:11:53/

1.下载RestSharpNuGet包

2.请求类和响应类

public class ApiRequest
{/// <summary>/// 请求地址/// </summary>public string Route { get; set; }/// <summary>/// 请求方式/// </summary>public Method Method { get; set; }/// <summary>/// 请求参数/// </summary>public Object Parameters { get; set; }/// <summary>/// 请求头,表示发送的请求的类型、数据格式等/// </summary>public string ContentType { get; set; } = "application/json";
}
public class ApiResponse
{public int Code { get; set; }public string Msg { get; set; }public Object Data { get; set; }
}

3.封装请求工具类

 public class HttpClient{private readonly RestClient Client; // 客户端private readonly string baseUrl = "http://localhost:63615/api/";public HttpClient(){Client = new RestClient();}/// <summary>/// 执行请求/// </summary>/// <param name="request">请求数据</param>/// <returns>响应数据</returns>public ApiResponse Execute(ApiRequest ApiRequest){var request = new RestRequest(ApiRequest.Method);request.AddHeader("Content-Type", ApiRequest.ContentType);if (ApiRequest.Parameters!= null){// SerializeObject 序列化参数 object -> jsonrequest.AddParameter("params", JsonConvert.SerializeObject(ApiRequest.Parameters), ParameterType.RequestBody);}// 设置请求地址Client.BaseUrl = new Uri(baseUrl + ApiRequest.Route);// 发送请求var res = Client.Execute(request);if (res.StatusCode == System.Net.HttpStatusCode.OK){// 反序列化响应数据 json -> objectreturn JsonConvert.DeserializeObject<ApiResponse>(res.Content);}else{return new ApiResponse { Code = (int)res.StatusCode, Msg = res.ErrorMessage };}}}

4. 在接口中引入该类,并在构造函数中初始化

private readonly IEventAggregator _eventAggregator;
public LoginUCViewModel(HttpClient httpClient)
{//请求Client_httpClient = httpClient;
}

 5.注入我们的请求服务(这里我用的是prism框架,写法可能有所不同,但是思路是一样的)

protected override void RegisterTypes(IContainerRegistry containerRegistry)
{//请求containerRegistry.GetContainer().Register<HttpClient>(made: Parameters.Of.Type<string>(serviceKey: "webUrl"));
}

6.发送请求

// 发送请求
ApiRequest apiRequest = new ApiRequest();
// 请求方式
apiRequest.Method = RestSharp.Method.POST;
// 请求地址(这里只写这一段是因为定义的时候定义了baseUrl
apiRequest.Route = "Account/Register";
AccountInfoDto.Password = Md5Helper.GetMd5(AccountInfoDto.Password);
apiRequest.Parameters = AccountInfoDto;
ApiResponse response = _httpClient.Execute(apiRequest);

 到此,简单的请求封装就结束了


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

相关文章

【TabBar嵌套Navigation案例-常见问题按钮-WebView-加载网页 Objective-C语言】

一、接下来呢,当我们点击这个cell的时候,我们应该modal出来一个控制器啊,像我们示例程序一样, 1.像示例程序一样 然后呢,这个控制器,实际上,是一个WebView, 里边有一个控件儿,叫webView,我们来做一下, 我们首先要找到点击cell的方法,在这个常见问题里边,helpCon…

WebStorm技巧

WebStorm&#xff1a;前端开发的加速技巧 &#x1f680; 前端工程师们&#xff0c;想不想让你的开发速度快得飞起来&#xff1f;今天我们就来解锁WebStorm中的那些让人惊叹的黑科技&#xff01; 第一关&#xff1a;环境配置篇 ⚙️ 1. 性能优化设置 // 推荐配置 {"memor…

flutter鸿蒙next 使用 InheritedWidget 实现跨 Widget 传递状态

在 Flutter 中&#xff0c;状态管理是开发过程中一个至关重要的部分。Flutter 提供了多种方式来实现组件间的状态传递&#xff0c;其中一种比较底层的方式是使用 InheritedWidget。虽然 InheritedWidget 主要用于将数据传递给其子树中的小部件&#xff0c;但它也是许多更高级状…

SAP-MM-下单配置增强TM-PI

接口开发功能说明 业务背景将开发的接口的整体业务背景进行概要说明,可以用图进行描。 用户在物流管理系统执行创建采购订单操作时,通过PI系统传递采购订单数据到SAP ERP系统中,同时,将相关信息写入到SAP ERP系统中的下单配置据库表。 接口清单以清单方式与对方系统之间的所…

如何利用指纹浏览器爬虫绕过Cloudflare的防护?

网络爬虫能够系统地浏览网页并提取所需的数据&#xff0c;通常被用于市场研究、数据分析或者竞争情报。然而&#xff0c;一些反爬虫机制给网络爬虫的工作带来了不少挑战和风险。 其中&#xff0c;Cloudflare提供了多层次的防护机制&#xff0c;包括IP封锁、速率限制、CAPTCHA验…

市场需求变化对晶圆代工的影响:适应与调整并行

根据QYResearch调研团队最新发布的《全球晶圆代工市场报告2023-2029》显示&#xff0c;预计到2029年&#xff0c;全球晶圆代工市场的规模将攀升至2377.1亿美元&#xff0c;未来几年内的年复合增长率&#xff08;CAGR&#xff09;将达到7.9%。 如下图所示&#xff0c;展示了全球…

Webserver(4.5)复用

目录 端口复用I/O多路复用selectclient.cselect.c 端口复用 单边的close&#xff0c;会有一个等待的状态&#xff0c;这个时候有1分钟的时间&#xff0c;端口还开启着。这个时候再打开服务器&#xff0c;可能会有端口依旧绑定的情况 端口复用来重启这个端口&#xff0c;就能重新…

【系统架构设计师】高分论文:论软件的可用性设计

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 摘要正文摘要 2021年5月,我参加了某市人才集团信息化集中项目的建设。在该项目中,我担任系统架构师。该项目合同金额为 523.5 万元,建设工期为8个月,项目建设内容包含新建一个门户网站、新建4个子系统以及集成…