c++发送post请求_request的post方法作用

c++发送post请求_request的post方法作用介绍:RestSharpRestSharp是一个轻量的,不依赖任何第三方的组件或者类库的Http的组件。RestSharp具体以下特性;1、通过NuGet方便引入到任何项目(Install-Packagerestsharp)支持net4.0++2、可以自动反序列化XML和JSON3、支持自定义的序列化与反序列化4、自动检测返回的内容类型5、支持HTTP的GET,POST,PUT,HEAD,OPTIONS,DELETE等操作…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

介绍:RestSharp

RestSharp是一个轻量的,不依赖任何第三方的模拟Http的组件或者类库。RestSharp具体以下特性;支持net4.0++,支持HTTP的GET, POST, PUT, HEAD, OPTIONS, DELETE等操作,支持oAuth 1, oAuth 2, Basic, NTLM and Parameter-based Authenticators等授权验证等。截止当前目前是github最高stars的http类库。

c++发送post请求_request的post方法作用

  官方文档:https://restsharp.dev/get-help/
  github:https://github.com/restsharp/RestSharp

 

nuget安装:

c++发送post请求_request的post方法作用

 

准备Webapi接口:

public class UnityController : ApiController
    {
        private IUserService _userService = null;
        public UnityController(IUserService userService)
        {
            _userService = userService;
        }

        // GET api/<controller>
        public IEnumerable<Student> Get()
        {
            //return UnityFactoryUtil.GetServer<IUserService>().GetList();
            return _userService.GetList();
        }



        // POST api/<controller>
        public string Post([FromBody]string value)
        {
            return value;
        }

        [Route("PostTest")]
        public string PostTest([FromBody]Student stu)
        {
            return Newtonsoft.Json.JsonConvert.SerializeObject(stu);
        }


    }





    public class FirstController : ApiController
    {
        // GET api/<controller>
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

         // GET api/<controller>/5
        [AllowAnonymous]//不使用验证
        public string Get(int id)
        {
            return "value";
        }

        [AllowAnonymous]//不使用验证
        [Route("GetById")]
        public string GetById([FromUri] Student stu)
        {
            return "value";
        }

    }


    [RoutePrefix("api/File")]
    public class FileController : ApiController
    {
        /// 上传文件
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public string UploadFiles()
        {
            string result = "";
            var path=System.Web.Hosting.HostingEnvironment.MapPath("~/Upload");
            HttpFileCollection files = HttpContext.Current.Request.Files;
            if (files != null && files.Count > 0)
            {
                for (int i = 0; i < files.Count; i++)
                {
                    HttpPostedFile file = files[i];
                    string filename = file.FileName;
                    string FileName = Guid.NewGuid().ToString()+Path.GetExtension(filename); ;
                    string FilePath = path+"\\" + DateTime.Now.ToString("yyyy-MM-dd") + "\\";
                    DirectoryInfo di = new DirectoryInfo(FilePath);
                    if (!di.Exists)
                    {
                        di.Create();
                    }
                    try
                    {
                        file.SaveAs(FilePath + FileName);
                        result ="上传成功";
                    }
                    catch (Exception ex)
                    {
                        result = "上传文件写入失败:" + ex.Message;
                    }
                }
            }
            else
            {
                result = "上传的文件信息不存在!";
            }

            return result;
        }


        /// <summary>
        /// 下载文件
        /// </summary>
        [HttpGet]
        public HttpResponseMessage DownloadFile()
        {
            string fileName = "image.jpg";
            string filePath = HttpContext.Current.Server.MapPath("~/Upload/") + "image.jpg";
            FileStream stream = new FileStream(filePath, FileMode.Open);
            HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
            response.Content = new StreamContent(stream);
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = HttpUtility.UrlEncode(fileName)
            };
            response.Headers.Add("Access-Control-Expose-Headers", "FileName");
            response.Headers.Add("FileName", HttpUtility.UrlEncode(fileName));
            return response;
        }
    }

 

使用介绍:

环境:net4.0、RestSharp(105.2.3.0版本)

注意bug:var response=client.Execute<Student>(request); 该方法序列化成实体有问题,可以改成序列化成dynamic(动态类)

           //Get
            {
                var client = new RestClient("https://localhost:44370/api/First");
                client.Authenticator = new RestSharp.Authenticators.HttpBasicAuthenticator("admin", "admin");

                var request = new RestRequest(Method.GET);
                request.AddHeader("Content-Type", "application/json");
                request.Timeout = 10000;
                request.AddHeader("Cache-Control", "no-cache");  
                request.AddParameter("name", "value"); // adds to POST or URL querystring based on Method
                request.AddUrlSegment("id", "123"); // replaces matching token in request.Resource

                // add parameters for all properties on an object
                //request.AddJsonObject(@object);

                //直接传输一个实体
                //request.AddJsonBody("实体");

                //request.AddObject(object, "PersonId", "Name", ...);
                request.AddHeader("header", "value");

                //add files to upload (works with compatible verbs)
                //request.AddFile("file", path);

                var response = client.Execute(request);
                var content = response.Content;
            }
            //POST(单个参数与)
            {
                var client = new RestClient("https://localhost:44370/api/Unity");
                var request = new RestRequest(Method.POST);
                request.AddParameter("", "value");

                var response = client.Execute(request);
                var content = response.Content;
            }
            //POST(实体参数)
            {
                var client = new RestClient("https://localhost:44370/api/Unity/PostTest");
                var request = new RestRequest(Method.POST);
                request.AddHeader("Content-Type", "application/json");
                Student stu = new Student
                {
                    AGE = 26,
                    ID = 1,
                    NAME = "czk",
                    PWD = 123456
                };
                request.AddJsonBody(stu);

                //var response = client.Execute<Student>(request);//报错、
                var response = client.Execute<dynamic>(request);
                var retStu = Newtonsoft.Json.JsonConvert.DeserializeObject<Student>(response.Data);
            }

             //上传文件
            {
                var client = new RestClient("https://localhost:44370/api/File/UploadFiles");
                var request = new RestRequest(Method.POST);
                var imagePath = AppDomain.CurrentDomain.BaseDirectory + @"File\image.jpg";
                request.AddFile("image", imagePath);

                var response = client.Execute(request);
                var content = response.Content;
            }
            //下载文件
            {
                var client = new RestClient("https://localhost:44370/api/File/DownloadFile");
                var request = new RestRequest(Method.GET);

                string tempFile = Path.GetTempFileName();
                var writer = File.OpenWrite(tempFile);
                request.ResponseWriter = responseStream =>
                {
                    using (responseStream)
                    {
                        responseStream.CopyTo(writer);
                    }
                };
                byte[] bytes = client.DownloadData(request);
            }

 

扩展:

c# EasyHttp (http请求库):https://blog.csdn.net/czjnoe/article/details/106483861

demo:https://github.com/czjnoe/GitHubDemo/tree/master/RestSharpDemo

github下载慢参考:https://blog.csdn.net/czjnoe/article/details/106321174

请使用手机”扫一扫”x

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197722.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java Web_基础加强

    Java Web_基础加强

    2021年5月19日
    115
  • 数据结构之ElemType

    数据结构之ElemType数据结构之ElemType也可能写作Elem等,主要是为了定义方便而存在的,一般出现ElemType的代码,都会在代码开头或者引用的文件中有一句typedef数据类型ElemType;的定义。//主要是为了方便,例:以后如果想修改ElemType的类型为long,只需写一句typedeflongElemType;例:typedefintElemType;ElemTypee;…

    2022年5月19日
    55
  • pycharm及python安装详细教程_python基础教程

    pycharm及python安装详细教程_python基础教程python下载安装图文教程-Pycharm下载安装图文教程Python及Pycharm安装图文教程,供大家参考,具体内容如下为了学习Python我今天对它进行了安装,并将Python及Pycharm安装方法进行了分享,希望可以帮助到大家注:建议大家在安装过程中不要将软件安装到系统盘中。1、Python安装1)首先需要进入Python官网下载安装包,进入后点击Downloads找到如下界面:可以根据自己的系统下载适合的安装包下载完成后直接…

    2022年8月27日
    4
  • nps是什么、怎么计算、有什么用

    nps是什么、怎么计算、有什么用前言NPS中文为净推荐值,全名为NetPromoterScore,由美国贝恩咨询提出。用一个简单的问题,了解客户是不是愿意推荐你的产品,评估口碑。也可以用来评估用户体验和客户满意度。通过了解客户的反馈,你也可以迭代、优化自己的产品。做好NPS可以让客户裂变,让每个客户都变成你的自来水、产品代言人。NPS是什么我们经常看到下面的问题,“你向朋友推荐XXX产品的可能性有多大?”,“我们可以如何提高”或者”是什么让你愿意向朋友推荐我们的产品”Windows10的NPS调查..

    2022年5月6日
    88
  • 如何避免重复提交?分布式服务的幂等性设计!

    来源:https://www.cnblogs.com/QG-whz/p/10372458.html作者:melonstreet 为什么需要保证幂等性 编程中的“幂等性”是指任意多次…

    2021年6月22日
    105
  • 用计算机最炫民族风乐谱,最炫民族风乐谱及歌词[通俗易懂]

    用计算机最炫民族风乐谱,最炫民族风乐谱及歌词[通俗易懂]最炫民族风乐谱及歌词《最炫民族风》是凤凰传奇演唱的一首流行歌曲,由张超作词和谱曲,发行于2009年5月27日,是其第三张专辑《最炫民族风》的主打歌。下面由百分网小编为大家介绍《最炫民族风》乐谱,希望能帮到你。《最炫民族风》乐谱【图片来源:中国曲谱网】《最炫民族风》歌词苍茫的天涯是我的爱绵绵的青山脚下花正开什么样的节奏是最呀最摇摆什么样的歌声才是最开怀弯弯的河水从天上来流向那万紫千红一片海火辣辣的歌…

    2022年9月22日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号