当前位置: 首页 > news >正文

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

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.发送请求

// 发送请求
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.mrgr.cn/news/64963.html

相关文章:

  • HarmonyOS第一课 07 从网络获取数据-习题
  • Java中每个类都有个Class对象,那Class类有自己的Class对象吗?
  • python中应该使用while 1吗?按位运算符可以代替逻辑运算符使用吗?
  • DPDK 简易应用开发之路 6:流规则配置与多队列数据包处理
  • 对象的接口与设计模式在其中的作用
  • Android中View.post的用法
  • 计组-Cache的基本概念,计算Cache+主存的平均周期
  • 世界时区划分
  • 2. 从服务器的主接口入手
  • Leetcode刷题Python之638.大礼包
  • Windows配置Nodejs及nmp简明教程(2024可用)
  • 深入理解JavaScript中的 new 关键字
  • 【2024-10-31-2024-11-03】LeetCode刷题——python语法基础题
  • python如何调字体大小
  • 241029 网鼎杯青龙组 Crypto2
  • STM32 第22章 常用存储器介绍
  • 语音合成技术:AI如何模仿人类声音
  • PCI、USB、AGP、PCI-Express
  • 计算布尔二叉树的值
  • CleanShot X - Mac(苹果电脑)专业截图录屏软件
  • 移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (6) - 触屏事件
  • mysql的存储函数
  • 《CLR via C#》读书笔记--CLR的执行模型
  • 小白投资理财 - 看懂布林线 BOLL
  • Android笔记(三十一):Deeplink失效问题
  • 英语写作中“出于……”out of的用法