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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • docker映射端口命令_docker底层原理

    docker映射端口命令_docker底层原理一、容器为什么要做端口映射查看宿主机的IP信息docker容器的IP信息下面面这一段这就是docker的网络,我们可以看到它的网段是172.17.0.0段的。3:docker0:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscnoqueuestateUPgroupdefaultlink/ether02:42:b6:4b:f0:16brdff:ff:ff:ff:ff:ffinet172.17.0

    2022年10月11日
  • VARCHAR 详解[通俗易懂]

    VARCHAR 详解[通俗易懂]varchar(20):20指的是表中的a字段能存储的最大字符个数Incontrastto CHAR, VARCHAR valuesarestoredasa

  • es与数据库的同步方案

    es与数据库的同步方案一、双写模式我们采取MySQL作为主要的数据存储,利用MySQL的事务特性维护数据一致性,使用ElasticSearch进行数据汇集和查询,此时es与数据库的同步方案就尤为重要。保证es与数据库的同步方案:1、首先添加商品入数据库,添加商品成功后,商品入ES,若入ES失败,将失败的商品ID放入redis的缓存队列(或MQ),且失败的商品ID入log文件(若出现redis挂掉,可从日志中取异…

  • 文章系列:响应式JavaScript

    文章系列:响应式JavaScript

  • SSM框架面试题总结[通俗易懂]

    SSM框架面试题总结[通俗易懂]Spring如何实现一个IOC容器配置文件配置包扫描路径递归包扫描获取.class文件反射,确定需要交给IOC管理的类对需要注入的类进行依赖注入配置文件中指定需要扫描的包路径定义一些注解,分别表示访问控制器,业务控制层,数据持久层,依赖注入注解,获取配置文件注解从配置文件中获取需要扫描的包路径,获取到当前路径下的文件信息及文件夹信息,我们将当前路径下所有的以.class结尾的文件添加到一个Set集合中进行存储遍历这个Set集合,获取在类上有指定注解的类,并将其交给IOC容器,定义一个

  • Mac 长按键盘快速输入(长按输入慢的问题)

    Mac 长按键盘快速输入(长按输入慢的问题)

发表回复

您的电子邮箱地址不会被公开。

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