RestClient(接口请求)

  一、电子签章:通过接口,传入参数中有pdf文件,和其他参数,在文件上盖上电子签章。

  引入:通过NuGet安装RestSharp,注意版本。

     备注:如果后面程序运行有错,可以看是引用是否更改了web.config文件(一般会更改Newtonsoft.Json的版本)

 

  代码:

复制代码
/// <summary>
        /// 电子签章(盖章)
        /// </summary>
        /// <param name="apiUrl"></param>
        /// <param name="filePath"></param>
        /// <param name="type">为1 表示报名确认函   为2 表示邀约人员名单</param>
        /// <returns></returns>
        public static string SendCaESignature(string apiUrl, string filePath, string type)
        {
            try
            {
                #region 初始化参数
                string url = ConfigurationManager.AppSettings["caESignature"].ToString() + apiUrl;

                string picName = "***.gif";
                string certName = "***.pfx";
                string page = "0";
                string posX = "";
                string posY = "";

                // 确认涵 x、y轴
                string hanPosX = ConfigurationManager.AppSettings["hanPosX"].ToString();
                string hanPosY = ConfigurationManager.AppSettings["hanPosY"].ToString();

                // 邀约人员名单
                string joinPosX = ConfigurationManager.AppSettings["joinPosX"].ToString();
                string joinPosY = ConfigurationManager.AppSettings["joinPosY"].ToString();

                // 不同名单,签章位置不一样
                if (type == "1")
                {
                    posX = hanPosX;
                    posY = hanPosY;
                }
                else
                {
                    posX = joinPosX;
                    posY = joinPosY;
                }
                #endregion

                #region 将文件转成二进制
                byte[] fileContentByte = new byte[10240]; // 文件内容二进制
                FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                fileContentByte = new byte[fs.Length]; // 二进制文件
                fs.Read(fileContentByte, 0, Convert.ToInt32(fs.Length));
                fs.Close();

                #endregion

                string postUrl = ConfigurationManager.AppSettings["caESignature"].ToString();
                var restClient = new RestClient(postUrl);
                RestRequest re = new RestRequest(apiUrl, Method.POST);
                re.AddQueryParameter("picName", picName);
                re.AddQueryParameter("certName", certName);
                re.AddQueryParameter("page", page);
                re.AddQueryParameter("posX", posX);
                re.AddQueryParameter("posY", posY);
                re.AddFileBytes("pdfFile", fileContentByte, "报名确认涵", "application/octet-stream");

                return restClient.Execute(re).Content;
            }
            catch (Exception e)
            {
                FileHelper.Log("电子签章:" + e.Message);
                return "";
            }

        }
复制代码

二、下载电子签章:通过接口下载二进制文件流

代码:

 

复制代码
/// <summary>
        /// 下载电子签章
        /// </summary>
        /// <param name="fileIden"></param>
        /// <returns></returns>
        public static string DownFileCA(string fileIden)
        {
            try
            {
                //创建本地缓存文件夹
                string basePath = System.Web.HttpContext.Current.Server.MapPath("~/Temp/");
                if (!Directory.Exists(basePath))
                {
                    Directory.CreateDirectory(basePath);
                }
                string filePath = basePath + string.Format("PDF_{0}.pdf", Guid.NewGuid().ToString("N"));

                string returnPath = "";
                if (File.Exists(filePath))
                {//如果已经存在,那么就不需要拷贝了,如果没有,那么就进行拷贝
                    return returnPath;
                }
                else
                {
                    FileStream fs = File.Create(filePath);
                    fs.Close();
                }

                string postUrl = ConfigurationManager.AppSettings["caESignature"].ToString();
                var restClient = new RestClient(postUrl);
                RestRequest re = new RestRequest("/Signature/download", Method.POST);
                re.AddQueryParameter("fileIden", fileIden);
                

                byte[] byteArray = restClient.DownloadData(re);

                using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    fs.Write(byteArray, 0, byteArray.Length);
                    fs.Close();
                }

                return filePath;
            }
            catch (Exception ex)
            {
                FileHelper.Log("电子签章:" + ex.Message);

                return "";
            }

        }
复制代码

 

posted @   月下之神  阅读(4249)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示