一、电子签章:通过接口,传入参数中有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. Android TextView setText卡顿问题

    TextView 是经常使用控件之中的一个,最经常使用的方法是setText()  . 可是 我们在显示大量的文本的时候,使用setText还是会有一些性能的问题. 这篇文章 关于TextView的s ...

  2. 20179209《Linux内核原理与分析》第一周作业

    如何揭开Linux操作系统的最大面纱 个人认为,真正理解一个操作系统最根本的就是理解其文件系统结构. 自windows图形界面诞生,国内大多数用户都选择了windows操作系统,很多人觉得window ...

  3. linux删除目录下所有文件,但是保留文件夹

    删除目录和子目录下所有rpm文件,但是保留文件夹,先cd到想要删除的目录 命令如下 find ./ -name "*.rpm" | xargs rm

  4. c# &与&& 和 |与||的区别(转载)

    &:按位与,对两个条件都进行判断&&:逻辑与,只要一个条件满足,另外一个条件就不会执行 同理:|:按位或,对两个条件都进行判断||:逻辑或,只要一个条件满足,另外一个条件就不会 ...

  5. 解析器组件和序列化组件(GET / POST 接口设计)

    前言 我们知道,Django无法处理 application/json 协议请求的数据,即,如果用户通application/json协议发送请求数据到达Django服务器,我们通过request.P ...

  6. 使用阿里云maven镜像加速jar包下载

    编辑 MAVEN_HOME/conf 文件夹下的 settings.xml,找到 <mirrors> 节点,把下面内容添加在其子节点内: <mirror> <id> ...

  7. 更新TP-LINK路由器的外网IP到花生壳动态IP解析

    ------------------------------------------------------------------------------- 以下内容可能还是存在问题,等之后有时间再 ...

  8. node+express上传图片到七牛

    本人微信公众号:前端修炼之路,欢迎关注 最近做项目的时候有一个上传图片的需求,由于没有后端的配合,所以决定自己来搭个服务器,实现上传图片功能.以后如果需要修改成java或者php为后端,直接使用即可, ...

  9. SDUT OJ 之 人活着系列之寻找最完美的人生

    人活着系列之寻找最完美的人生 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 也许,人活着就是要尝试人世间的酸甜苦辣,喜怒哀乐,经 ...

  10. Linux bash shell环境变量以及语法规范

    摘自: http://blog.csdn.net/abc_ii/article/details/8762739