萤石云定时更新 accessToken
时间:2021-07-12
本文章向大家介绍萤石云定时更新 accessToken,主要包括萤石云定时更新 accessToken使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
class UpdateVideoTokenHelper { private static Timer myTimer; private static string appKey = ConfigurationManager.AppSettings["appKey"]; private static string appSecret = ConfigurationManager.AppSettings["appSecret"]; public static void SetTimer() { myTimer = new Timer(10000); myTimer.Elapsed += OnTimedEvent; myTimer.AutoReset = true; myTimer.Enabled = true; } private static void OnTimedEvent(Object source, ElapsedEventArgs e) { long updateTime = UpdateToken(); Timer timer = source as Timer; if (updateTime > 0) { timer.Interval = updateTime; } else { timer.Interval = 432000; } } private static long UpdateToken() { try { WebClient webClient = new WebClient(); string postString = "appKey=" + appKey + "&appSecret=" + appSecret; //以form表单的形式上传 webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); // 转化成二进制数组 byte[] postData = Encoding.ASCII.GetBytes(postString); // 上传数据 byte[] responseData = webClient.UploadData("https://open.ys7.com/api/lapp/token/get", "POST", postData); string res = Encoding.UTF8.GetString(responseData); var jsonObj = JObject.Parse(JsonConvert.DeserializeObject(res).ToString()); if (jsonObj["code"].ToString() == "200") { string accessToken = jsonObj["data"]["accessToken"].ToString(); string sql = "update FM_DEVICE set EXTENDCODE5 = '" + accessToken + "'"; int excuteRes = DBHelper.ExecuteCommand(sql); }
//计算出需要更新的时间 修改timer 执行时间 long expireTime = long.Parse(jsonObj["data"]["expireTime"].ToString()); DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1, 0, 0, 0, 0)); long nowTime = (DateTime.Now.Ticks - startTime.Ticks) / 10000; return expireTime - nowTime; } catch (Exception e) { Console.WriteLine(e.ToString()); return 20000; } } }
原文地址:https://www.cnblogs.com/xiaoqiyaozou/p/15003383.html
- 关于一般的并查集求根操作的一组对照研究
- vue计算属性详解——小白速会
- 【技巧】Java工程中的Debug信息分级输出接口及部署模式
- 1934: [Shoi2007]Vote 善意的投票
- 算法模板——线段树8 (字符串回文变换)
- 算法模板——哈希单模板字符串匹配
- javascript 原型及原型链详解
- 算法模板——并查集 2(支持快速即时查询本连通块内容,纯原创!)
- 1707: [Usaco2007 Nov]tanning分配防晒霜
- JavaScript 图片的上传前预览(兼容所有浏览器)
- 算法模板——sap网络最大流 3(递归+邻接表)
- BZOJ4819: [Sdoi2017]新生舞会(01分数规划)
- 3401: [Usaco2009 Mar]Look Up 仰望
- javascript 基本概念
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 用Jquery做一个进度条
- Android SoundPool实现简短小音效
- [-Flutter趣玩篇-] 出神入化的Align
- Android应用禁止屏幕休眠的3种方法
- Flutter 实现下拉刷新上拉加载的示例代码
- [- C++趣玩篇1 -] 从打印开始说起
- Android实现蓝牙(BlueTooth)设备检测连接
- JQuery 入门学习(三)
- Android实现美团APP的底部滑动菜单
- 正则十八式-第二式:控鹤擒龙
- android实现手写签名功能
- [普及]程序自启动方式 - ActiveX
- Android WebView实现顶部进度条
- 通过一个简单的例子学习Angular Injection Token工作原理
- Android 自定义球型水波纹带圆弧进度效果(实例代码)