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 ""; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 让容器管理更轻松!