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 -> json
             request.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 -> object
             return 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);

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/907933.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言 | Leetcode C语言题解之第520题检测大写字母

题目&#xff1a; 题解&#xff1a; bool detectCapitalUse(char * word){int len strlen(word);int res 0;int index -1;if(len 1)return true;else{for(int i 0; i < len; i){if(isupper(word[i])){res;index i;}}}return res len || res 0 || (res 1 &&…

VidPanos:从随手拍摄的平移视频生成全景视频

在当今数字化时代,视频拍摄已经成为人们记录生活和分享经历的重要方式。然而,普通手机拍摄的视频往往受到视角的限制,无法完整地展现一个广阔的场景。今天,我们要介绍的 VidPanos 技术,为解决这个问题提供了一种创新的方法。 VidPanos 是由来自华盛顿大学、谷歌 DeepMind…

使用 LlamaIndex 实现的检索增强生成(RAG)

Retrieval Augmented Generation (RAG) using LlamaIndex — ROCm Blogs (amd.com) 2024 年 4 月 4 日 作者&#xff1a;Clint Greene. 先决条件 要运行本博客&#xff0c;您需要具备以下条件&#xff1a; Linux: 参见受支持的 Linux 发行版 ROCm: 参见安装说明 AMD GPU: 参…

【计网】深入理解NAT机制,内网穿透与内网打洞,代理服务

我没胆量犯错 才把一切错过 --- 林夕 《我对不起我》--- 一文了解NAT机制&#xff0c;代理服务&#xff0c;内网穿透 1 再谈 NAT 机制2 内网穿透与内网打洞3 代理服务器 1 再谈 NAT 机制 NAT机制我们在解决IP地址不足的问题中提到过。为了解决IP地址不足的问题&#xff0c;采…

京东毫秒级热key探测框架JD-hotkey

前言 对任意突发性的&#xff0c;无法预先感知的热点数据&#xff0c;包括热点数据&#xff08;如突发大量请求同一个商品&#xff09;、热用户&#xff08;如恶意爬虫刷子&#xff09;、热接口&#xff08;突发海量请求同一个接口&#xff09;等&#xff0c;一瞬间打到我们的服…

2025生物发酵展(济南)为生物制造产业注入新活力共谱行业新篇章

2025第十四届国际生物发酵展将于3月3-5日济南盛大举办&#xff01;产业链逐步完整&#xff0c;展会面积再创历史新高&#xff0c;展览面积较上届增涨至60000平方米&#xff0c;专业观众40000&#xff0c;品牌展商800&#xff0c;同期活动会议增加至50场&#xff0c;展会同期将举…

设计模式08-行为型模式1(命令模式/迭代器模式/观察者模式/Java)

五、行为型模式 **行为模式的定义&#xff1a;**行为型模式是对不同的对象之间划分职责和算法的抽象化。行为型模式定义了系统中对象之间的交互与通信&#xff0c;研究系统在运行时对象之间的相互通信与协作&#xff0c;进一步明确对象的职责&#xff0c;包括对系统中较为复杂的…

边缘计算网关在机床数据采集中的应用-天拓四方

随着工业4.0和智能制造的快速发展&#xff0c;机床作为制造业的核心设备&#xff0c;其数据采集与分析对于提升生产效率、保证产品质量、优化加工过程具有重要意义。传统的数据采集方式存在数据传输速度慢、实时性差、数据处理能力有限等问题。为了解决这些问题&#xff0c;边缘…

Navicat 连接远程腾讯云服务器的MySQL数据库

首先需要开放开放腾讯云安全端口&#xff0c;可以参考这个链接腾讯云服务器入站规则端口开放使用指南(CentOS系统)。 但是注意需要开放的是IPv6&#xff0c;这个可以通过netstat命令查看确认。 然后查看当前用户信息 select user, host from mysql.user一般看到的都是 localh…

Navicat for MySQL 错误:1251

mySql&#xff1a;8.4 Navicat for MySQL&#xff1a;11.0.10 企业版 绿色版 官网中关于mysql_native_password插件的说法&#xff1a;链接 1. 问题 连接数据库报错&#xff1a;1251 要求升级Navicat for MySQL 2. 原因 mysql中的mysql_native_password插件默认是关闭的 …

mysql5安装

1.下载安装包 https://downloads.mysql.com/archives/community/ mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar tar -xvf mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar2.安装依赖 yum -y install perl yum -y install net-tools yum install numactl libaio libaio-devel -y也可…

【MyBatis】【基于轻量型架构的WEB开发】课程 课后习题 章节测试

mybatis关联查询、缓存、注解 一. 单选题 1. 下列关于 <collection> 元素的描述正确的是&#xff08;&#xff09;。 A. MyBatis 就是通过 <collection> 元素来处理一对多关联关系的 B. <collection> 元素的属性与 <association> 元素完全相同 C.…

C++ | Leetcode C++题解之第528题按权重随机选择

题目&#xff1a; 题解&#xff1a; class Solution { private:mt19937 gen;uniform_int_distribution<int> dis;vector<int> pre;public:Solution(vector<int>& w): gen(random_device{}()), dis(1, accumulate(w.begin(), w.end(), 0)) {partial_sum(…

opencv - py_imgproc - py_canny Canny边缘检测

文章目录 Canny 边缘检测目标理论OpenCV 中的 Canny 边缘检测其他资源 Canny 边缘检测 目标 在本章中&#xff0c;我们将学习 Canny 边缘检测的概念用于该目的的 OpenCV 函数&#xff1a;cv.Canny() 理论 Canny 边缘检测是一种流行的边缘检测算法。它由 John F. Canny 于1…

java、excel表格合并、指定单元格查找、合并文件夹

#创作灵感# 公司需求 记录工作内容 后端&#xff1a;JAVA、Solon、easyExcel、FastJson2 前端&#xff1a;vue2.js、js、HTML 模式1&#xff1a;合并文件夹 * 现有很多文件夹 想合并全部全部的文件夹的文件到一个文件夹内 * 每个部门发布的表格 合并全部的表格为方便操作 模…

数据结构作业day5

链栈&#xff0c;自己实现一遍&#xff0c;但是节点存储不是整数&#xff0c;存储学生信息&#xff08;年龄&#xff0c;分数&#xff0c;姓名&#xff09;三级引用。 1、建立学生信息结构体&#xff0c;将data改为学生信息结构体类型。 2、循环入栈和入队。 循环入栈代码 …

【学术精选】SCI期刊《Electronics》特刊“New Challenges in Remote Sensing Image Processing“

英文名称&#xff1a;New Challenges in Remote Sensing Image Processing 中文名称&#xff1a;"遥感图像处理的新挑战"特刊 期刊介绍 “New Challenges in Remote Sensing Image Processing”特刊隶属于《Electronics》期刊&#xff0c;聚焦遥感图像处理领域快速…

2024 CSS保姆级教程 - BFC详解

前言 - CSS中的文档流 在介绍BFC之前&#xff0c;需要先给大家介绍一下文档流。​ 我们常说的文档流其实分为定位流、浮动流、普通流三种。​ ​ 1. 绝对定位(Absolute positioning)​ 如果元素的属性 position 为 absolute 或 fixed&#xff0c;它就是一个绝对定位元素。​ 在…

数字化装配助力柔性制造与快速换型,驱动效率飞跃

数字化装配是利用先进的数字化技术&#xff0c;如三维建模、仿真分析、物联网、大数据、人工智能等&#xff0c;对装配过程进行精确设计、优化控制和智能管理的一种现代化生产方式。它打破传统装配依赖于人工经验和物理样机的局限&#xff0c;通过模拟环境进行预装配验证&#…

如何在服务器端对PDF和图像进行OCR处理

介绍 今天我想和大家分享一个我在研究技术资料时发现的很好玩的东西——Tesseract。这不仅仅是一个普通的库&#xff0c;而是一个用C语言编写的OCR神器&#xff0c;能够识别一大堆不同国家的语言。我一直在寻找能够处理各种文档的工具&#xff0c;而Tesseract就像是给了我一把…