一、电子签章:通过接口,传入参数中有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();#endregionstring 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 "";}}

转载于:https://www.cnblogs.com/yxzs/p/10795068.html

RestClient(接口请求)相关推荐

  1. 接口定义,常见的接口,常见的接口请求方式,put请求和patch请求的区别

    接口定义:应用程序编程接口,指前后端数据交互的一套标准,包括软件内部之间的接口,硬件之间的接口或者是软件对外的接口. 常见的接口类型:         1,Webservice接口,主要用于服务端的接 ...

  2. java跨域权重_爱站权重查询 API 接口请求调用

    原标题:爱站权重查询 API 接口请求调用 爱站权重查询 API 接口在网上已经很多且大都封装成了 API 供别人调用.支持前台跨域请求,以GET/POST方式提交即可.爱站权重查询 API 接口可以 ...

  3. python http接口_python处理http接口请求

    一.安装 requests和jsonpath 模块 安装命令:pip install requests pip install jsonpath 二.requests 处理常见的接口请求参数类型 1. ...

  4. dubbo接口测试_Django测试工具平台之Dubbo接口请求 + 前端

    前言 本章内容主要完成以下几个内容: 1.记录Dubbo接口请求 2.搜索请求记录 3.前端页面完成 4.项目第一阶段展示 项目展示中主要演示在本地如何启动项目,进行调试.如果需要部署线上环境,可以去 ...

  5. 通过RobotFramework简单的接口请求示例

    为什么80%的码农都做不了架构师?>>>    一个简单的接口请求示例,接口测试将在此基础上进行! 库文件的导入: 需要导入的库 Collections 和 RequestsLibr ...

  6. 接口请求,上传byte数组byte[]数据异常,负数变正数/负数变63

    接口请求,上传byte数组byte[]数据异常,负数变正数/负数变63 参考文章: (1)接口请求,上传byte数组byte[]数据异常,负数变正数/负数变63 (2)https://www.cnbl ...

  7. Python接口自动化实战 ( 第一阶段) - 封装接口请求类和异常处理

    1.封装http接口请求 已经实现了一个简单的接口请求,接下来就要考虑封装这个请求,在后面的用例中,只需要传递参数(URL ,Params,cookie,heade,method 等)每次去调用这个请 ...

  8. jmeter根据循环获取参数_jmeter forEach循环获取response参数值进行接口请求

    jmeter forEach循环获取response参数值进行接口请求 注意: 一,ForEach控制器 输入变量前缀:输入正则表达式变量的引用名称即可 Start index for loop(ex ...

  9. java 请求响应_java http接口请求响应 request response

    接口类: 1 package org.sunshine.dcda.epg.wechat.controller.niao; 2 3 import javax.servlet.http.HttpServl ...

  10. python写后台接口请求出错_python登录接口测试问题记录与解决

    最近做一个登录接口测试中,发现了以下的一些场景,本次将所遇到的问题以及解决过程做下记录: 1.抓包发现登录操作时,先后请求三个接口,并且每个接口有关联 2.每次请求都需要保留cookie信息,下个接口 ...

最新文章

  1. Retrofit2 源码解析之动态代理
  2. 基于JavaWeb实现在线租房系统
  3. 寻找实力高手长期合作
  4. Linux下history命令详解---转载
  5. linux命令we,Linux学习篇之基础命令
  6. 如何处理大流量高并发
  7. 判断无向图是否有回路有四种方法
  8. python下载哪个版本好-Python下载哪个版本比较好?
  9. centos虚拟机复制后网络重启出错解决
  10. <C++>我用煮粽子的时间拿捏了类和对象中友元的全部形式
  11. matlab中的graythresh函数的实例
  12. ubuntu下定时自动备份数据库
  13. 3. fooView rxjava + rxandroid + retrofit 安卓开发框架搭配 az kj
  14. 英语语法汇总(1.名词)
  15. 20221015 动量矩定理
  16. 这几招你都会了吗?新手必备,以后少修车哦!
  17. 【Linux Note】centos 7 / 8 通过修改网络配置文件 ifcfg-ens33来设置静态IP
  18. 专访汇付数据副总裁姜靖宇:“纸上谈兵”时代终结,人工智能将变革第三方支付行业
  19. VGA显示学号姓名以及彩条
  20. 中国五笔 v2.4 下载

热门文章

  1. 跆拳道培训机构如何用抖音快手做推广
  2. 2016校招薪资汇总
  3. C# 输入半径,计算圆的面积和周长
  4. (知乎)我想问一下PHP的学习路线图
  5. SDR屏幕放HDR(HLG)视频画面泛灰
  6. Office365完整离线安装包下载及自定义安装教程
  7. 华为云分布式数据库中间件DDM
  8. ERROR 1526 (HY000): Table has no partition for value xxx
  9. vue选择图片的几种方式
  10. Hashkey邓超:投资数字金融的三大逻辑和三大视角(全文)