Logo

【C#】基于RestClient请求示例

photo

2024年02月18日

 RestSharp下载地址:

https://download.csdn.net/download/u012949335/87694650?spm=1001.2014.3001.5503

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;
using System.Text;
using RestSharp;        
        /// <summary>
        /// RestClient请求(form-data)
        /// </summary>
        /// <param name="baseUrl">请求地址</param>
        /// <param name="headerParam">请求header</param>
        /// <param name="bodyData">请求body(form-data)</param>
        /// <param name="fileTypeName">form-data type=file的name命名名称</param>
        /// <param name="fileStream">文件流</param>
        /// <param name="fileName">上传文件名称</param>
        /// <param name="method">请求方法</param>
        /// <returns></returns>
        public static string PostInfoData(string baseUrl, Dictionary<string, string> headerParam, Dictionary<string, object> bodyData, string fileTypeName, Action<Stream> fileStream, string fileName, Method method = Method.POST)
        {
            RestClient client = new RestClient(baseUrl);
            client.Timeout = -1;
            ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(RemoteCertificateValidate);
            ServicePointManager.SecurityProtocol = (System.Net.SecurityProtocolType)192 | (System.Net.SecurityProtocolType)768 | (System.Net.SecurityProtocolType)3072;
            RestRequest request = new RestRequest(method);
            request.AlwaysMultipartFormData = true;
            if (headerParam != null && headerParam.Count > 0)
                foreach (var key in headerParam.Keys)
                    request.AddHeader(key, headerParam[key]);
            if (bodyData != null && bodyData.Count > 0)
                foreach (var key in bodyData.Keys)
                    request.AddParameter(key, bodyData[key]);
            if (!string.IsNullOrEmpty(fileName) && fileStream != null)
                request.AddFile(fileTypeName, fileStream, fileName);
            var boundary = DateTime.Now.Ticks.ToString("X");
            var ContentType = "multipart/form-data;boundary=----" + boundary;
            request.AddHeader("Content-Type", ContentType);
            IRestResponse response = client.Execute(request);
            return response.Content.ToString();
        }
        /// <summary>
        /// RestClient请求(application/json)
        /// </summary>
        /// <param name="baseUrl">请求地址</param>
        /// <param name="headerParam">请求header</param>
        /// <param name="jsonData">json对象</param>
        /// <param name="method">请求方法</param>
        /// <returns></returns>
        public static string PostInfoData(string baseUrl, Dictionary<string, string> headerParam, string jsonData, Method method = Method.POST)
        {
            RestClient client = new RestClient(baseUrl);
            client.Timeout = -1;
            ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(RemoteCertificateValidate);
            ServicePointManager.SecurityProtocol = (System.Net.SecurityProtocolType)192 | (System.Net.SecurityProtocolType)768 | (System.Net.SecurityProtocolType)3072;
            RestRequest request = new RestRequest(method);
            if (headerParam != null && headerParam.Count > 0)
                foreach (var key in headerParam.Keys)
                    request.AddHeader(key, headerParam[key]);
            request.AddHeader("Content-Type", "application/json");
            request.AddParameter("application/json", jsonData, ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);
            return response.Content;
        }
        /// <summary>
        /// RestClient请求(form-data)
        /// </summary>
        /// <param name="baseUrl">请求地址</param>
        /// <param name="headerParam">请求header</param>
        /// <param name="bodyData">请求body(form-data)</param>
        /// <param name="method">请求方法</param>
        /// <returns></returns>
        public static byte[] PostInfoData(string baseUrl, Dictionary<string, string> headerParam, Dictionary<string, object> bodyData, Method method = Method.POST)
        {
            RestClient client = new RestClient(baseUrl);
            client.Timeout = -1;
            ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(RemoteCertificateValidate);
            ServicePointManager.SecurityProtocol = (System.Net.SecurityProtocolType)192 | (System.Net.SecurityProtocolType)768 | (System.Net.SecurityProtocolType)3072;
            RestRequest request = new RestRequest(method);
            request.AlwaysMultipartFormData = true;
            if (headerParam != null && headerParam.Count > 0)
                foreach (var key in headerParam.Keys)
                    request.AddHeader(key, headerParam[key]);
            if (bodyData != null && bodyData.Count > 0)
                foreach (var key in bodyData.Keys)
                    request.AddParameter(key, bodyData[key]);
            var boundary = DateTime.Now.Ticks.ToString("X");
            var ContentType = "multipart/form-data;boundary=----" + boundary;
            request.AddHeader("Content-Type", ContentType);
            IRestResponse response = client.Execute(request);
            return response.RawBytes;
        }

调用示例

1、RestClient请求(form-data)

public static string GetFile(Stream stream, string title, string fileType)
        {
            Dictionary<string, string> headerParam = new Dictionary<string, string>();
            headerParam.Add("x-xx", "s");
            headerParam.Add("x-xxx", "ss");
            headerParam.Add("x-xxxx", "sss");
            Dictionary<string, object> bodyData = new Dictionary<string, object>();
            bodyData.Add("title", title);
            bodyData.Add("fileType", fileType);
            var url = "xxxxxxx";
            var redata = PostInfoData(url, headerParam, bodyData, "file", stream.CopyTo, title + "." + fileType);
            return redata;
        }

2、RestClient请求(application/json)

public static string GetCreateInfo() 
        {
            Dictionary<string, string> headerParam = new Dictionary<string, string>();
            headerParam.Add("x-x", "s");
            headerParam.Add("x-xx", "ss");
            headerParam.Add("x-xxx", "sss");
            string jsondata =  "{\"conditions\":{ \"requestname\":\"" + "" + "\",\"workflowIds\":\"xx\"},\"pageNo\":\"" + 1 + "\",\"pageSize\":\"" + 1000 + "\",\"workId\":\"xx\",\"appId\":\"ssss\"}";
            var url = "sssssssss";
            var redata = PostInfoData(url, headerParam, jsondata);
            return redata;
        }

3、RestClient请求(form-data),返回byte[]

public static byte[] GetDownloadfile(string documentxx)
        {
            Dictionary<string, string> headerParam = new Dictionary<string, string>();
            headerParam.Add("x-x", "s");
            headerParam.Add("x-xx", "ss");
            headerParam.Add("x-xxx", "sss");
            Dictionary<string, object> bodyData = new Dictionary<string, object>();
            bodyData.Add("documentxx", documentxx);
            bodyData.Add("connet", "xxxxxx");
            var url = "sssssssss";
            var redbyte = PostInfoData(url, headerParam, bodyData, RestSharp.Method.GET);
            return redbyte;
        }

橙子主题打折出售

其实我不卖,主要是这里是放广告的,所以就放了一个
毕竟主题都没做完,卖了也是坑.

购买它
所有附件
该文章没有附件.
本文为原创文章,请注意保留出处!
Gitlab 定时备份 2024年02月05日

要求1.为了能够备份和恢复,请确保你的系统上安装了Rsync#Debian/Ubauntusu...Gitlab定时备份

热门文章

无法握住的故土 在我们心灵最温暖的角落,总有一寸土地是属于故乡的。虽然我们看似已远离故土,可骨子里对故乡的依恋却是从未冷却过。我们无论漂泊他乡,还是在繁华都市平步青云,可故乡的悠悠情思总会潜入梦乡与你缠绵。是儿时那一缕缕茉莉的清香萦绕在梦境,也是邻家那已锈迹斑斑的铁壶里,开出艳丽的花儿在梦的边缘摇曳。故土就这样根深蒂固地在我们的灵魂深处烙下深深的印记。 作者:Pastore Antonio
1596 浏览量
EWS(Exchange Service)基本使用(获取个人会议,会议室会议内容,会议室列表,发送会议,修改会议,删除会议) 最近公司要求和exchange服务对接,所以稍微研究了一下官方文档,做出以下总结,欢迎大家补充。先...EWS(ExchangeService)基本使用(获取个人会议,会议室会议内容,会议室列表,发送会议,修改会议,删除会议) 作者:Pastore Antonio
1585 浏览量
Sql Server 部署SSIS包完成远程数据传输 本篇介绍如何使用SSIS和作业完成自动更新目标数据任务。**温馨提示:如需转载本文,请注明...SqlServer部署SSIS包完成远程数据传输 作者:Pastore Antonio
1578 浏览量
SQL Server AG集群启动不起来的临时自救大招 背景前晚一朋友遇到AG集群发生来回切换不稳定的情况,情急之下,朋友在命令行使用命令重启WSFC集群...SQLServerAG集群启动不起来的临时自救大招 作者:Pastore Antonio
1572 浏览量
windows 下安装 memcahce 官网上并未提供Memcached的Windows平台安装包,我们可以使用以下链接来下载,你需...windows下安装memcahce 作者:Pastore Antonio
1566 浏览量