一、电子签章:通过接口,传入参数中有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 = "";
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 == "")
{
posX = hanPosX;
posY = hanPosY;
}
else
{
posX = joinPosX;
posY = joinPosY;
}
#endregion #region 将文件转成二进制
byte[] fileContentByte = new byte[]; // 文件内容二进制
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
fileContentByte = new byte[fs.Length]; // 二进制文件
fs.Read(fileContentByte, , 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, , byteArray.Length);
fs.Close();
} return filePath;
}
catch (Exception ex)
{
FileHelper.Log("电子签章:" + ex.Message); return "";
} }

RestClient(接口请求)的更多相关文章

  1. Postman - 功能强大的 API 接口请求调试和管理工具

    Postman 是一款功能强大的的 Chrome 应用,可以便捷的调试接口.前端开发人员在开发或者调试 Web 程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的 Fi ...

  2. xmlrpc实现bugzilla api调用(无会话保持功能,单一接口请求)

    xmlrpc实现bugzilla4   xmlrpc api调用(无会话保持功能,单一接口请求),如需会话保持,请参考我的另外一篇随笔(bugzilla4的xmlrpc接口api调用实现分享: xml ...

  3. Loadrunner模拟JSON接口请求进行测试

    Loadrunner模拟JSON接口请求进行测试     一.loadrunner脚本创建 1.Insert - New step -选择Custom Request -  web_custom_re ...

  4. SoapUI接口测试·第一个HTTP Request接口请求和断言

    一.新建SOAP项目 [File]-[New SOAP Project],在[Project Name]输入{工程名},点击[OK].   二.新建TestSuite 选中项目,右键选择[New Te ...

  5. Facebook Graph API 接口请求

    Graph API 调试器 这两天因项目需求,在调试FB的接口.项目的应用在FB上面.L特傻.没有区分FB的api的使用方式. 因为应用是在FB上面的.所以在登录应用的时候,就已经登录了FB平台.对于 ...

  6. 四、VueJs 填坑日记之搭建Axios接口请求工具

    上一章,我们认识了项目的目录结构,以及对项目的目录结构做了一些调整,已经能把项目重新跑起来了.今天我们来搭建api接口调用工具Axios.Vue本身是不支持ajax调用的,如果你需要这些功能就需要安装 ...

  7. (C#)日志接口请求响应时间

    日志接口响应时间,记录接口请求信息,响应结果以及响应时间等.可以清楚的分析和了解接口状态. 如果一个一个地在接口下面做日志,那不是我们想要的结果.所以,我们选择做一个特性来控制接口要不要记录请求响应日 ...

  8. Vue + webpack 项目配置化、接口请求统一管理

    准备工作 需求由来: 当项目越来越大的时候提高项目运行编译速度.压缩代码体积.项目维护.bug修复......等等成为不得不考虑而且不得不做的问题.  又或者后面其他同事接手你的模块,或者改你的bug ...

  9. 【转】js生成接口请求参数签名加密

    js生成接口请求参数签名加密 签名算法规则: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=v ...

  10. vue打包后,接口请求404的完美解决方案

    在开发环境中,和后台对接为了解决跨域问题,使用了代理,也就是vue的proxyTable,但是打包放到生产环境中去时,接口请求不到,404,原因是开发环境的代理并不能用到生产环境,但是直接在请求接口是 ...

随机推荐

  1. 目标检测之人头检测(HaarLike Adaboost)---高密度环境下行人检测和统计

    实验程序视频 下载 1 问题描述 高密度环境下的行人统计一直没有得到很好的解决,主要原因是对高密度人群中的行人检测和跟踪是一个很难的问题,如下图所示环境,存在的困难包括: 检测方面: 由于人群整体处于 ...

  2. CentOS Python 安装MySQL-python

    一.安装mysql yum list | grep mysql >>yum install -y mysql-server mysql mysql-devel CentOS 7的yum源中 ...

  3. Java线程:概念及原理

    线程是执行的程序中的一个线程. Java虚拟机允许应用程序必须同时运行多个执行线程. 每个线程都有一个优先事项.具有更高优先级的线程优先于线程的优先级较低的执行.每个线程可能会或可能不会也被标记为一个 ...

  4. The Log-Structured Merge-Tree (LSM-Tree

    https://www.cs.umb.edu/~poneil/lsmtree.pdf [Log-Structured Merge-Tree ][结构化日志归并树][要解决的问题]The   Log-S ...

  5. 【题解】[JSOI2008]最大数

    [题解][P1198 JSOI2008]最大数 正难则反,意想不到. 这道题是动态让你维护一个数列,已经在数列里面的数据不做改变,每次在最后加上一个数,强制在线. 既然正着做很难,考虑如果时间倒流,不 ...

  6. win7怎么设置打印机共享

    一.设置好家庭组,让客户机加入家庭组 二.对服务机的打印机进行共享设置,如果保存不成功请在计算机服务那里打开防火墙 三.1.开启guest用户,具体操作:我的电脑右击---管理---本地用户和组--开 ...

  7. 转载 j2ee j2se j2me 区别,mvc 和ssh联系理解

    [转]J2SE J2EE J2ME的区别 以及 MVC与SSH对应关系 2014-3-6阅读322 评论0 J2SE J2EE J2ME的区别多数编程语言都有预选编译好的类库以支持各种特定的功能,在J ...

  8. REST、DRF(View源码解读、APIView源码解读)

    一 . REST            前言 1 . 编程 : 数据结构和算法的结合 .小程序如简单的计算器,我们输入初始数据,经过计算,得到最终的数据,这个过程中,初始数据和结果数据都是数据,而计算 ...

  9. luoguP3769 [CH弱省胡策R2]TATT

    luoguP3769 [CH弱省胡策R2]TATT PS:做这题前先切掉 P4148简单题,对于本人这样的juruo更助于理解,当然dalao就当练练手吧 题目大意: 现在有n个四维空间中的点,请求出 ...

  10. 学习使用ExpressJS 4.0中的新Router

    概述 ExpressJS 4.0中提出了新的路由Router.Router好比是一个"迷你版"的express应用,它没有引入views或者settings,但是提供了路由应有的A ...