【C#】RestSharp踩坑日记

这篇具有很好参考价值的文章主要介绍了【C#】RestSharp踩坑日记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

踩坑记录

一  返回值无法显示中文的问题:

【C#】RestSharp踩坑日记

 但是,如果先将其转成json,再将其转成字符串,就能显示中文了。

Newtonsoft.Json.Linq.JObject jo = Newtonsoft.Json.Linq.JObject.Parse(response.Content);

jo.ToString();

【C#】RestSharp踩坑日记

全网都没找到靠谱的,这个是最简单的方式。 

 

二  报错信息:无法发送具有此谓词类型的内容正文

【C#】RestSharp踩坑日记

 这个其实就是Get的时候,不应该添加这个,AddHeader("Content-Type", $"{content_type}; charset=UTF-8"),这个是Post才会用到的。

代码封装

RestSharp之前一直使用的是老版本的,直接添加的dll,其实RestSharp一直再更新换代,使用Nuget可以安装最新的版本。

【C#】RestSharp踩坑日记

 我们可以通过它的官方文档,查看它的使用方式:

RestSharp Next (v107) | RestSharphttps://restsharp.dev/v107/#restsharp-v107这里提到一个,生命周期的问题:

RestClient lifecycle

Do not instantiate RestClient for each HTTP call. RestSharp creates a new instance of HttpClient 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,这样会耗尽连接池。

好了,上代码:文章来源地址https://www.toymoban.com/news/detail-401057.html

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踩坑日记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ES踩坑记录之UNASSIGNED分片无法恢复

    我们线上有一套ES集群,三台机器,共运行了6个节点。一直在线上跑了几个月也一直没出什么问题。然而好巧不巧,就在昨天,集群中的3号节点磁盘出现故障,导致机器直接瘫痪。本来大家觉得问题不大,ES不是有容灾吗,换个新节点上去不就能自动分配分片了。 当我们信心

    2024年02月11日
    浏览(30)
  • C#一个开源跨平台的 HTTP 客户端库——RestSharp

    GitHub - restsharp/RestSharp: Simple REST and HTTP API Client for .NET Simple REST and HTTP API Client for .NET. Contribute to restsharp/RestSharp development by creating an account on GitHub. https://github.com/restsharp/RestSharp          在进行软件开发的时侯,你可能经常需要使用一些公共的Web Api接口执行 CRUD 操作;要

    2024年02月13日
    浏览(41)
  • VirtualBox Ubuntu无法安装增强功能以及无法复制粘贴踩坑记录

    在VirtualBox安装增强功能想要和主机双向复制粘贴,中间查了很多资料,终于是弄好了。记录一下过程,可能对后来人也有帮助,我把我参考的几篇主要的博客都贴上来了,如果觉得我哪里讲得不清楚的,可以去对应的博客去看,讲得更加详细。 报错:未能加载虚拟光盘…到

    2024年02月14日
    浏览(30)
  • ES踩坑记录之集群间通信异常造成节点无法加入

    公司新搭了一套ES集群,4台机器,ES版本7.5.0,前期搭建十分顺利,但集群运行一段时间后会出现问题。问题具体体现为节点间通讯异常,集群会重新选主,但选主之后只能通过新的主节点进行集群操作,其他节点无法加入主节点。 通过查询ES的日志,我们发现如下报错: 大

    2024年02月12日
    浏览(34)
  • 踩坑记录:xorm的sql()函数后无法使用FindAndCount()

    懒省事想用 sql 写个有连表操作的分页查询语句,看到 xorm 中 sql 要和代码紧密纠缠在一起就不爽,所有就想用 xorm 中的 session.SQL(sql).Limit(size, offset).FindAndCount() 方法解决。不曾想。。。 ??? 这里是直接将 sql 语句赋值给 RawSQL 了 FindAndCount() 方法调用的 Find() 方法没问题,直

    2024年02月15日
    浏览(40)
  • 【踩坑记录】微信开发者工具已授权位置getLocation时却显示未授权

    前提:uniapp的wx小程序项目,接手别人的老项目,getLocation时开发者工具报未授权,顺着授权步骤走却发现已经授权了。已经上线的小程序没问题。遇到有段时间了,今天有时间看看:      如上图:明明已经授权了 排查流程: 1.uni.authorize()查询是否已授权 结果:  2.查看g

    2024年02月12日
    浏览(50)
  • HarmonyOS 踩坑日记(1)

    主模块引入子模块报  hvigor ERROR: Failed :entry:default@CompileArkTS...  hvigor ERROR: ArkTS Compiler Error ERROR: ArkTS:ERROR File: D:codeharmonyOsxxxxxxsrcmainetscommonConstants.ets:2:18  Unknown resource name \\\'main_text_color\\\'. ERROR: ArkTS:ERROR File: D:codeharmonyOsxxxxxxsrcmainetscommonConstants.ets:3:13  Unknown resource

    2024年02月05日
    浏览(31)
  • Elasticsearch踩坑日记

    场景 ubuntu环境下使用apt-get install elasticsearch安装es,一路掉坑,做个简单记录,避免再次踩坑。systemctl start elasticsearch 方式启动,通过 journalctl -xe 和 查看 elasticsearch日志进行排错。当前的elasticserch版本是8.6,日志默认位置在/var/log/elasticsearch/elasticsearch.log.优先使用es官网搜索答案

    2024年02月15日
    浏览(30)
  • Unity Mac踩坑日记

    1、读取外部文件夹使用IO,读取StreamingAsset或者Unity定义文件夹或者服务器文件使用www或者UnityRequest 2、mac下使用www 需要添加前缀:\\\"file://\\\" 3、Mac下的Rider很好用,断点调试也很方便 4、改变文件编码格式,使用vscode通过编码保存可以保存为带BOM格式的UTF8文件在Mac上 5、Rider快捷

    2024年02月11日
    浏览(23)
  • 微信小程序逆向踩坑日记

    1、首先解包,用UnpackMiniApp.exe进行解密,报错:小程序ID获取失败,无法解密。  解决方法:用的另外一个大佬的解密工具(听说只有电脑的有加密,手机的没有,如果加密失败,可以尝试才模拟器上找到对应的小程序包直接进行反编译)。https://codeload.github.com/superBiuBiuMan/

    2024年02月16日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包