首页 > 其他分享 >RestSharp组件Get请求带body的时候返回数据丢失问题

RestSharp组件Get请求带body的时候返回数据丢失问题

时间:2023-03-31 12:13:12浏览次数:36  
标签:body string Get request BindingFlags var RestSharp response

postman的复制代码默认就是RestSharp。方便也好用,但是使用get请求并且带Body的时候要注意,返回的数据竟然会有丢失

解决办法:

string RequestByGet(string index, string action, object paramter)
{
    var api = $"{ElasticsearchUrl}/{index}/{action}";
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(api);
    request.Proxy = null;
    request.KeepAlive = false;
    request.Method = "GET";
    request.ContentType = "application/json; charset=UTF-8";
    request.AutomaticDecompression = DecompressionMethods.GZip;
    string body = InitBody("order", paramter);

    var type = request.GetType();
    var currentMethod = type.GetProperty("CurrentMethod", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(request);
    var methodType = currentMethod.GetType();
    methodType.GetField("ContentBodyNotAllowed", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(currentMethod, false);

    using (var streamWriter = new StreamWriter(request.GetRequestStream()))
    {
        streamWriter.Write(body);
    }

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    Stream myResponseStream = response.GetResponseStream();
    StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
    string retString = myStreamReader.ReadToEnd();

    myStreamReader.Close();
    myResponseStream.Close();

    if (response != null)
    {
        response.Close();
    }
    if (request != null)
    {
        request.Abort();
    }
    return retString;
}

标签:body,string,Get,request,BindingFlags,var,RestSharp,response
From: https://www.cnblogs.com/BOSET/p/17275877.html

相关文章

  • 解决docker环境apt-get命令太慢问题
    最近学习doris,准备在本地使用docker搭建一个环境,doris文档提供Dockfile中有这么一段:RUNapt-getupdate&&\apt-getinstall-ydefault-mysql-client&&\apt-getclean&&\mkdir/opt/apache-doris&&\cd/opt&&\mvap......
  • three.js 使用 getWorldPosition 获取世界坐标
    记录一下项目中的需求,组合后旋转,解组后需要模型位置为旋转后位置disCombinationModel(ModelArry,type){//判断是否有选中if(ModelArry.length===1){constob=ModelArry[0]//判断是否是组合if(ob.typeName==='combination'){......
  • 时钟小程序 所用类qwidget QTime Qpalette
    DigiClock::DigiClock(QWidget&nbsp;*parent) :&nbsp;QLCDNumber(parent){ //设置时钟背景 QPalette&nbsp;p&nbsp;=&nbsp;palette();<br/>//设置调色板颜色QPalette::Window设置背景色 p.setColor(QPalette::Window,&nbsp;Qt::blue);<br/>......
  • 用go实现get/post请求调用api
    注册登录首页专栏后端文章详情用go实现get/post请求调用apiHeroine1 发布于2022-09-01 上海  最近的一次demo,相当于一次复习吧,把......
  • future.get()处理多个线程的java例子
    一种代码示例是使用ExecutorService类的submit()方法提交多个Callable任务,并返回多个Future对象,然后在主线程中循环调用Future对象的get()方法获取结果,并进行汇总1。代码......
  • 【THM】Putting it all together(网站组件协同工作介绍)-学习
    本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/puttingitalltogether本文相关内容:了解Web服务的所有单独组件如何协同工作,这种协同工作能让我们可以访问自......
  • HTTP Get请求的参数带空格如何处理
    在URL中,空格会被转义成%20,因此在GET请求的参数中,可以将空格替换为%20,或者使用加号(+)代替空格。这些特殊字符在URL中都有特殊的含义,因此需要进行编码,以便正确传递参......
  • Unity触碰函数OnTriggerStay与Input.GetKeyDown
    (写写博客尝尝鲜)触碰函数中不要使用按键检测我想让玩家在某个区域内进行按键检测,代码如下1voidTriggerPlayerStay(Collider2Dcollider)2{3if(co......
  • Element.getBoundingClientRect()
    Element.getBoundingClientRect() 方法返回一个 DOMRect 对象,其提供了元素的大小及其相对于视口的位置。参考:https://developer.mozilla.org/zh-CN/docs/Web/API/Elem......
  • Magento getModel getSingleton等常用函数说明
    Mage::getModel在通常的PHP初始化类对象的时候,使用以下方式进行生成。$modelSales=newModelSales();但是在magento中初始化模型对象时候,使用以下的方式进行生成模......