【C#】RestSharp踩坑日记
踩坑记录
一 返回值无法显示中文的问题:
但是,如果先将其转成json,再将其转成字符串,就能显示中文了。
Newtonsoft.Json.Linq.JObject jo = Newtonsoft.Json.Linq.JObject.Parse(response.Content);
jo.ToString();
全网都没找到靠谱的,这个是最简单的方式。
二 报错信息:无法发送具有此谓词类型的内容正文
这个其实就是Get的时候,不应该添加这个,AddHeader("Content-Type", $"{content_type}; charset=UTF-8"),这个是Post才会用到的。
代码封装
RestSharp之前一直使用的是老版本的,直接添加的dll,其实RestSharp一直再更新换代,使用Nuget可以安装最新的版本。
我们可以通过它的官方文档,查看它的使用方式:
RestSharp Next (v107) | RestSharphttps://restsharp.dev/v107/#restsharp-v107这里提到一个,生命周期的问题:
RestClient lifecycle
Do not instantiate
RestClient
for each HTTP call. RestSharp creates a new instance ofHttpClient
internally, and you will get lots of hanging connections, and eventually exhaust the connection pool.If you use a dependency-injection container, register your API client as a singleton.
就是说,不要每次调用的时候都创建一个client,这样会耗尽连接池。
好了,上代码:
internal class RestSharpRequestHandler{private RestClient client;private RestRequest request;public RestSharpRequestHandler(){var options = new RestClientOptions(){ThrowOnAnyError = true, //设置不然不会报异常MaxTimeout = 1000};client = new RestClient(options);}public string Post(string url, string str, string content_type = "application/json; charset=UTF-8"){try{this.request = new RestRequest(url).AddHeader("Content-Type", $"{content_type}; charset=UTF-8").AddStringBody(str,DataFormat.Json);var response = client.Post(request);Newtonsoft.Json.Linq.JObject jo = Newtonsoft.Json.Linq.JObject.Parse(response.Content);return jo.ToString();}catch (Exception ex){return "连接服务器出错:\r\n" + ex.Message;}}public string Get(string url, string content_type = "application/json; charset=UTF-8"){try{request = new RestRequest(url);var response = client.Get(request);JObject jo = JObject.Parse(response.Content);return jo.ToString();}catch (Exception ex){return "连接服务器出错:\r\n" + ex.Message;}}}
【C#】RestSharp踩坑日记相关推荐
- 全志哪吒D1-H Tina Linux Ubuntu 22.04入门踩坑日记
哪吒D1-H Tina Linux入门踩坑日记 系统环境 源码编译 mklibs-readelf的C++标准问题 m4的SIGSTKSZ问题 libfakeroot的_STAT_VER问题 read_ ...
- Win11 + Ubuntu18.04 双系统踩坑日记
Win11 + Ubuntu18.04 双系统踩坑日记 前言 准备工作 硬件配置 镜像下载 Win11镜像下载 Ubuntu镜像下载 启动盘准备 Win11启动盘 Ubuntu启动盘 Win11安装 ...
- 【Flutter混合开发踩坑日记之‘applicationVariants‘ for extension ‘android‘】
Flutter混合开发踩坑日记之'applicationVariants' for extension 'android' 正文 坑一:Could not get unknown property ' ...
- Swarm-BZZ踩坑日记之 如何让METMASK小狐狸显示gbzz
刚入门bzz的新手还不知道小狐狸是什么的请移步上一章节:Swarm-BZZ踩坑日记之 如何在METMASK小狐狸导入节点地址 在浏览器安装好小狐狸,并添加自己的钱包地址后 会发现只显示ETH,并不显示 ...
- ReactNative 在丁香医生项目中引入的踩坑日记
ReactNative 在丁香医生项目中引入的踩坑日记 this没绑定到函数导致空指针 参考 React-Native 踩坑第二弹-undefined is not a function(evalua ...
- springboot踩坑日记—nacos: Error watching Nacos Service change
springboot踩坑日记-nacos: Error watching Nacos Service change Spring Boot :: (v2.1.5.RELEASE) 错误代码: 07-3 ...
- 微信小程序踩坑日记-微信小程序首次加载样式错乱问题
微信小程序踩坑日记-微信小程序首次加载样式错乱问题 在实际开发项目中,遇到了个棘手的问题,就是在某些因素下,进入小程序发现有些样式发生偏移.错乱等问题 问题原因:-未知(估计是组件的问题) ↓ 解决办 ...
- c++字符串操作之std::ostringstream踩坑日记
c++字符串操作之std::ostringstream踩坑日记 在开发过程中经常会遇到字符串操作,而std::string又没有format操作,这就很难受了. 于是我找到了std::ostrings ...
- Antd Pro V4 protable详解(ps:踩坑日记)
Antd Pro V4 protable详解(ps:踩坑日记) 写在前面: 在这篇文章中,你会了解到: protable 中的cloumns属性详解 protable数据加载和处理(两种方法,直接使用 ...
- midjourney指令笔记+踩坑日记+gpt论文润色指令
跟人拼团入手了midjourney,长期记录更新. midjourney指令笔记+踩坑日记 指令笔记 踩坑日记 GPT论文润色指令 指令一 指令二 指令三 指令四 指令五 指令笔记 关键词参考网址:p ...
最新文章
- 怎樣制作线段动画_PPT动画还能这么做?我擦!动画源文件免费送你
- 个人怎么发表期刊具体细节
- Java 编程技巧之数据结构
- 记录rewrite url我之前不知道的地方
- android usb设备节点_(五)树莓派3开发环境搭建——6.树莓派USB与tty串口号绑定...
- 浙江大学PAT上机题解析之1009. 说反话 (20)
- 读取SD卡里面的BMP文件 显示到TFT上
- python keyboard模块_python3 安装 pykeyboard 模拟浏览器
- es6 Symbol概述
- mysql的join语句使用_MySQL开发技巧——如何正确使用Join语句
- 掌握这个套路,让你的可视化大屏万里挑一
- matlab利用工作区的变量画图,在使用MATLAB“绘图”选项卡中的命令按钮绘图之前,需要( )。 答案:在工作区中选择绘图变量...
- R 语言的安装(详细教程)
- c语言编辑游戏时用哪个软件,我想用C语言编写一个小型游戏,使用什么软件
- 前端开发必备之MDN文档
- h5网站模板_超全超实用的80个模板网站,我全部整理在这里了
- Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64
- 大类资产配置的基本方法
- (迁)rsync:基本命令和用法
- 如何从官网下载STM32固件库