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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • native2ascii用法

    native2ascii用法背景:在做Java开发的时候,常常会出现一些乱码,或者无法正确识别或读取的文件,比如常见的validator验证用的消息资源(properties)文件就需要进行Unicode重新编码。原因是java默认的编码方式为Unicode,而我们的计算机系统编码常常是GBK等编码。需要将系统的编码转换为java正确识别的编码问题就解决了。 1、native2ascii简介:native2ascii是s…

    2025年10月30日
    4
  • MySQL的简单查询语句「建议收藏」

    MySQL的简单查询语句「建议收藏」查询:一:查询所有数据select * from Info 查所有数据select Code,Name from Info 查特定列二:根据条件查select * from Info where Code=’p001′ 一个条件查询select * from Info where Code=’p001′ and Nation=’n001′ 多条件 并关系 查询select * from Info …

    2022年6月13日
    58
  • pycharm中文语言包下载不了_pycharm基本使用方法

    pycharm中文语言包下载不了_pycharm基本使用方法本文为原文转载PyCharmproforMac(编程开发软件)​www.mac69.com安装完成后运行,进行基本的配置后会弹出激活窗口,选择「Evaluateforfree」,然后点击「Evaluate」按钮。PyCharmproforMac(编程开发软件)安装完成后运行,进行基本的配置后会弹出激活窗口,选择「Evaluateforfree」,然后点击「Evaluate」按钮…

    2022年8月29日
    3
  • X3D 概念

    X3D 概念Extensible3D(X3D)Part1:Architectureandbasecomponents4Concepts概念4.1一般4.1.1主题此条款描述了X3D的核心概念,包括:如何创建和回放X3D场景,X3D场景的运行时语法,组件和概貌构成的模块化结构,通过层概念保证顺应性,数据编码语法,程序存取,网络化因素。表

    2022年6月5日
    50
  • windows server 2012r2安装iis_iis启动服务器

    windows server 2012r2安装iis_iis启动服务器1.进入服务器管理器,右键角色,添加角色服务,勾选灰掉的选项(这边截的图是已安装的)2.双击1中创建的internet服务器,右键添加网站,设置好网站名称、物理路径、ip地址、端口号等点击保存网站建立好之后,接着就要配置相关访问的权限、(http响应标头)跨域访问、ISAPI筛选器、请求筛选等3、配置好了网站,接下来就要配置防…

    2022年10月9日
    4
  • ORM常用操作

    一般操作专业官网文档必会13条查询<1>all():查询所有结果<2>filter(**kwargs):它包含了与所给筛选条件相匹配的对象<3>

    2022年3月29日
    41

发表回复

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

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