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

C# POST请求 各种实现方法梳理

目录

1.首先是基础的参数

2.使用RestClient  

3.使用封装库  

4.使用微软原生库进行请求

5.使用HttpClient进行请求


C#代码中,实现Http/Https 中的POST请求,可以有很多种方式,下面就梳理下我常用的几种方式,给大家借鉴

1.首先是基础的参数

	//请求地址string url = $"https:/pczd.com/api/swj/auto/buildSln";//请求头Dictionary<string, string> header = new Dictionary<string, string>();//添加Tokenheader.Add("Authorization", "Token");//请求参数  这边使用JSONJToken param = new JObject();param["SlnCode"] = "Number01";param["SlnName"] = "一号上位机";param["SlnFramework"] = "Net461";//添加数组JArray jArray = JArray.FromObject(codeList);param["list"] = jArray;//得到JSON字符串string data = param.ToString();

2.使用RestClient  

使用RestClient  需要在项目中使用Nuget 引用 RestSharp包

//创建请求对象var client = new RestClient(url); //创建Requestvar request = new RestRequest();//设置请求类型 POSTrequest.Method = Method.Post;//添加请求头request.AddHeader("Authorization", "Token");request.AddHeader("Content-Type", "application/json");//添加请求体request.AddParameter("application/json", data, ParameterType.RequestBody);//发送请求var response = client.Execute(request);if(response.StatusCode==HttpStatusCode.OK){var result = string.Empty;//接收返回内容result = response.Content;//JSON 解析var resJson = JToken.Parse(result);var code = Convert.ToInt32(resJson["code"]);var msg = Convert.ToString(resJson["msg"]);if (code != 200){return new BaseResult(false, $"[{code}]{msg}");}return BaseResult.Successed;}else{return new BaseResult(false, $"[{response.StatusCode}]");}

3.使用封装库  

我自己封装的,需要Nuget引用 LS.Helper

做好一些方法的封装,在使用的过程中就能简化很多代码,和减少很多工作量

	//直接传请求头参数 和 请求JToken对象,再给个编码var resJson= LS.Helper.HttpJsonHelper.HttpPostRequest(url, header, param,dataEncoding);//返回的JToken对象,直接使用名称获取值var code = Convert.ToInt32(resJson["code"]);var msg = Convert.ToString(resJson["msg"]);if (code != 200){GlobalData.ProcessCtrl.AddOtherAlarm("MES041", $"绑定盒子码[{packingQrcode}]发生异常,接口返回信息【[{code}]{msg}】");return new BaseResult(false, $"[{code}]{msg}");}return BaseResult.Successed;

4.使用微软原生库进行请求

var request = (HttpWebRequest)WebRequest.Create(url);request.Method = "POST";              request.ContentType = "application/json";request.ContentLength = data.Length;request.Headers.Add("Authorization", token.Token);request.Headers.Add("Accept-Encoding", "gzip, deflate, br");//将请求体内容写入流中byte[] paramJsonBytes;paramJsonBytes = Encoding.ASCII.GetBytes(data);request.ContentLength = paramJsonBytes.Length;Stream writer = request.GetRequestStream();writer.Write(paramJsonBytes, 0, paramJsonBytes.Length);//发送请求var response = (HttpWebResponse)request.GetResponse();if (response.StatusCode == HttpStatusCode.OK){var result = string.Empty;//使用流接收数据using (var streamReader = new StreamReader(response.GetResponseStream())){//读取流中的内容result = streamReader.ReadToEnd();//JSON序列化,返回JToken对象var resJson = JToken.Parse(result);var code = Convert.ToInt32(resJson["code"]);var msg = Convert.ToString(resJson["msg"]);if (code != 200){GlobalData.ProcessCtrl.AddOtherAlarm("MES041", $"绑定盒子码[{packingQrcode}]发生异常,接口返回信息【[{code}]{msg}】");return new BaseResult(false, $"[{code}]{msg}");}return BaseResult.Successed;}}else{return new BaseResult(false, $"[{response.StatusCode}]");}

5.使用HttpClient进行请求

using (var httpClient = new HttpClient()){//添加请求头httpClient.DefaultRequestHeaders.Add("Authorization", token.Token);//创建请求体对象var content = new StringContent(data, dataEncoding, "application/json");     //发情POST请求  此处为异步请求var task = httpClient.PostAsync(url, content);//同步方法中需要等待task.Wait();var response = task.Result;if (response.IsSuccessStatusCode){//获取返回结果,一样是异步方法var res_task = response.Content.ReadAsStringAsync();//同步方法中需要等待res_task.Wait();var result = res_task.Result;//JSON序列化JToken resJson = JObject.Parse(result);var code = Convert.ToInt32(resJson["code"]);var msg = Convert.ToString(resJson["msg"]);if (code != 200){GlobalData.ProcessCtrl.AddOtherAlarm("MES041", $"绑定盒子码[{packingQrcode}]发生异常,接口返回信息【[{code}]{msg}】");return new BaseResult(false, $"[{code}]{msg}");}return BaseResult.Successed;}else{return new BaseResult(false, $"[{response.StatusCode}]");}}

相关文章:

C# POST请求 各种实现方法梳理

目录 1.首先是基础的参数 2.使用RestClient 3.使用封装库 4.使用微软原生库进行请求 5.使用HttpClient进行请求 C#代码中&#xff0c;实现Http/Https 中的POST请求&#xff0c;可以有很多种方式&#xff0c;下面就梳理下我常用的几种方式&#xff0c;给大家借鉴 1.首先…...

《MySQL数据库》数据导入、导出、表处理—/—<4>

一、插入数据 1、可使用外部工具navicat导入数据的情况下 因为部分公司不允许使用外部工具去导入数据 对于大批量数据&#xff0c;除了上节课中使用导入向导插入数据&#xff0c;也可在vscode中打开csv文件&#xff0c;然后选中光标&#xff0c;长按shiftctrl&#xff0c;拖动…...

Java I/O (Input/Output)——文件字节流

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;Java SE 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Java I/O 简介 Java I/O&#xff08;输入/输出&#xff09;是 Java 程序中…...

VisionPro二次开发学习笔记4-使用C#创建绘图图形

VisionPro提供了许多可以添加到CogDisplay的基本形状&#xff0c;例如CogCircle&#xff0c;CogRectangle&#xff0c;CogEllipse和CogRectangleAffine。这些形状可以是用户可以用鼠标操作的交互式图形&#xff0c;也可以是用户无法更改的静态形状。 若要在CogDisplay控件上绘…...

【langchain学习】使用JsonOutputParser让大模型生成结构化JSON数据

使用Langchain处理结构化数据&#xff0c;以JsonOutputParser为例。以下是具体步骤和代码示例&#xff1a; 导入所需库&#xff1a; from config import llm from langchain_core.output_parsers import JsonOutputParser from langchain_core.prompts import PromptTemplate f…...

【学习笔记】Matlab和python双语言的学习(最大最小化规划)

文章目录 前言一、最大最小化规划二、选址问题三、代码实现----Matlab1.Matlab 的 fminimax 函数2.Matlab 代码 四、代码实现----python总结 前言 通过模型算法&#xff0c;熟练对Matlab和python的应用。 学习视频链接&#xff1a; https://www.bilibili.com/video/BV1EK41187…...

基于SpringBoot的Redis开发实战教程

配置和集成缓存涉及多个步骤&#xff0c;从选择适当的缓存技术到实现缓存的存取操作。以下是具体的步骤和示例&#xff0c;假设我们使用Redis作为缓存工具&#xff0c;并基于Spring Boot进行开发。 1. 选择和配置缓存技术 a. 选择缓存工具 Redis 是一个流行的内存数据结构存…...

mysql 分区操作

1。新建分区 mysql 没有全局唯一索引&#xff0c;因此所有涉及唯一索引的都需要加上分区键&#xff0c;因此要做好权衡&#xff0c;键分区不一定能提高效率哦&#xff0c;建分区的主要目的是为了分区查询和删除数据 --将CREATE_TIME 加入主键 ALTER TABLE your_table DROP PR…...

[网鼎杯 2018]Comment

使用环境为https://adworld.xctf.org.cn/challenges&#xff0c;搜索题目[网鼎杯 2018]Comment。 进入环境&#xff0c;发现为一个留言板&#xff0c;点击发帖试试。 尝试发帖 跳转到登录页面&#xff0c;根据提示使用burp进行暴力破解。 发现payload为666时状态码不同。 尝试…...

LVS详解

目录 一、LVS简介 LVS 官网: 二、LVS 负载均衡模式 2.1 LVS-NAT模式&#xff1a; 2.1.1 简介 2.1.2 工作流程图&#xff1a; 2.1.3 说明&#xff1a; 2.1.4 LVS-NAT的优缺点&#xff1a; 2.2 LVS-DR模式&#xff1a; 2.2.1 简介 2.2.2 工作原理&#xff1a; 2.2.3 工作…...

Yolo-World初步使用

Yolo v8目前已经支持Yolo-World&#xff0c;整理一下初步使用步骤。 使用步骤 1 先下载Yolo-World的pt文件&#xff0c;下载地址&#xff1a;GitHub - AILab-CVC/YOLO-World: [CVPR 2024] Real-Time Open-Vocabulary Object Detection 官网应该是点这里&#xff08;有个笑脸…...

Navicat Premium使用

文章目录 Navicat Premium 16的使用连接MySQL建立数据库并构建表导入数据 Navicat Premium 16是一款功能强大的数据库管理工具&#xff0c;它允许用户从单一应用程序中同时连接多种数据库&#xff0c;提供了极其便捷和高效的管理和开发环境&#xff0c;对于 MySQL 用户来说&…...

LLC数字控制TMS320F28034,4-DSP的epwm配置介绍

LLC数字控制TMS320F28034&#xff0c;4-DSP的epwm配置介绍 1 TMS320F280341.1 概述1.2 PWM详细介绍 2 TMS320F28034 PWM功能框图2.1 ePWM功能模块2.2 ePWM功能寄存器框图 3 TMS320F28034 PWM初始化流程4 结合项目设计5 代码设计5.1 PWM初始化程序5.2 工程代码 6 总结 配套代码示…...

MongoDB学习记录

1、初识Mongo 概述&#xff1a;与关系型数据库不同&#xff0c;MongoDB 的数据以类似于 JSON 格式的二进制文档存储&#xff0c;通常称这种格式为Bson&#xff0c;Bson不仅支持JSON中已有的数据类型&#xff0c;还增加了一些额外的数据类型&#xff0c;例如日期和二进制数据&a…...

vlunstack-2(复现红日安全-ATT CK实战)

环境搭建 配置信息 DC IP&#xff1a;10.10.10.10 OS&#xff1a;Windows 2012(64) 应用&#xff1a;AD域 WEB IP1&#xff1a;10.10.10.80 IP2&#xff1a;192.168.47.131 OS&#xff1a;Windows 2008(64) 应用&#xff1a;Weblogic 10.3.6MSSQL 2008 PC IP1&#xff1a;10.10…...

【生信入门】预览快速体验Linux-重生之小明闯Linux

生信少走弯路,快试试生信云专用服务器。新用户注册免费体验5小时。https://www.tebteb.cc 一.故事 小明的Linux冒险 在一片混沌的黑暗中&#xff0c;小明睁开了眼睛。他感到头痛欲裂&#xff0c;四周一片漆黑&#xff0c;只有一行闪烁的字符映入眼帘&#xff1a; [xiaomingu…...

用.net core简易搭建webapi托管到IIS

1、从官网下载.NET Core 托管捆绑包 https://learn.microsoft.com/zh-cn/aspnet/core/tutorials/publish-to-iis?viewaspnetcore-8.0&tabsvisual-studio 2、新建ASP.NET Core WEB API项目 新建控制器TestController并生成GetInfo方法 3、发布 目标路径选择 2)显示所有…...

【计算机网络---OSI七层模型】

一、OSI的基本概念及原则 OSI是Open System Interconnect的缩写&#xff0c;意为开放式系统互联。各个层次的划分遵循以下原则&#xff1a; 1. 同一层的各网络节点都有相同的层次结构&#xff0c;具有同样的功能&#xff1b; 2. 同一节点的内相邻层之间通过接口进行通信&…...

Error updating database. Cause: org.apache.shiro.UnavailableSecurity

mybtisplus查看MetaObjectHandler是否有自定义获取用户信息填充用户的方法...

【网络安全】本地文件包含及远程文件包含漏洞详解

一、文件包含漏洞概述 1.1 什么是文件包含 开发人员将需要重复调用的函数写入一个文件&#xff0c;对该文件进行包含时产生的操作。这样编写代码能减少冗余&#xff0c;降低代码后期维护难度。 保证网站整体风格统一&#xff1a;导航栏、底部footer栏等&#xff0c;把这些不…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...

sshd代码修改banner

sshd服务连接之后会收到字符串&#xff1a; SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢&#xff1f; 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...

32单片机——基本定时器

STM32F103有众多的定时器&#xff0c;其中包括2个基本定时器&#xff08;TIM6和TIM7&#xff09;、4个通用定时器&#xff08;TIM2~TIM5&#xff09;、2个高级控制定时器&#xff08;TIM1和TIM8&#xff09;&#xff0c;这些定时器彼此完全独立&#xff0c;不共享任何资源 1、定…...

高分辨率图像合成归一化流扩展

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 1 摘要 我们提出了STARFlow&#xff0c;一种基于归一化流的可扩展生成模型&#xff0c;它在高分辨率图像合成方面取得了强大的性能。STARFlow的主要构建块是Transformer自回归流&#xff08;TARFlow&am…...

React核心概念:State是什么?如何用useState管理组件自己的数据?

系列回顾&#xff1a; 在上一篇《React入门第一步》中&#xff0c;我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目&#xff0c;并修改了App.jsx组件&#xff0c;让页面显示出我们想要的文字。但是&#xff0c;那个页面是“死”的&#xff0c;它只是静态…...