计算 HMAC-SHA1 阿里云消息队列RocketMQ版签名机制案例以及http调用接口案例
时间:2021-07-14
本文章向大家介绍计算 HMAC-SHA1 阿里云消息队列RocketMQ版签名机制案例以及http调用接口案例,主要包括计算 HMAC-SHA1 阿里云消息队列RocketMQ版签名机制案例以及http调用接口案例使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
使用请求参数构造规范化的请求字符串
private static final String ENCODING = "UTF-8"; private static String percentEncode(String value) throws UnsupportedEncodingException { return value != null ? URLEncoder.encode(value, ENCODING).replace("+", "%20").replace("*", "%2A").replace("%7E", "~") : null; }
使用UTC时间按照ISO 8601标准,格式为YYYY-MM-DDThh:mm:ss
Date date = new Date(); System.out.println("本地时间Date: " + date); TimeZone tz = TimeZone.getTimeZone("UTC"); DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); df.setTimeZone(tz); //获取时区 String nowAsISO = df.format(date);
参数排序 (用到的排序方法在上一篇随笔)
Map<String, String> map = new HashMap<>(); String ti=System.currentTimeMillis()+"";//当随机数使用 String url="http://ons.cn-shenzhen.aliyuncs.com?"; map.put("Action","OnsRegionList"); map.put("productName","Ons"); map.put("domain","cn-shenzhen"); map.put("Version","2019-02-14"); map.put("AccessKeyId",""); map.put("AccessKeySecret",""); map.put("SignatureMethod","HMAC-SHA1"); map.put("Timestamp",nowAsISO); map.put("SignatureVersion","1.0"); map.put("SignatureNonce",ti); map.put("Format","JSON"); String s = formatUrlMap(map, true);
处理待签名的参数、签名
String StringToSign= "GET" + "&" + percentEncode("/") + "&" + percentEncode(s);
String cu = HMACSha1(StringToSign,AccessKeySecret+"&");
将签名字段加入排序、进行请求url拼接、发起请求(Jsoup不知道的可以自行百度)
Connection connect = Jsoup.connect(url+s2); System.out.println(connect.ignoreContentType(true).ignoreHttpErrors(true).get());
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.13.1</version> </dependency>
打印结果
原文地址:https://www.cnblogs.com/qq376324789/p/15009852.html
- 真正将标注文字遮盖的方法
- “AS3.0高级动画编程”学习:第四章 寻路(AStar/A星/A*)算法 (中)
- li浮动时ul高度为0,解决ul自适应高度的几种方法
- 使用正则表达式求完整路径中的文件名
- “AS3.0高级动画编程”学习:第四章 寻路(AStar/A星/A*)算法 (下)
- Centos下SFTP双机高可用环境部署记录
- as3:Function以及call,apply
- centos6下redis cluster集群部署过程
- centos6下ActiveMQ+Zookeeper消息中间件集群部署记录
- 发布一个轻量级的滑块控件
- as3:sprite作为容器使用时,最好不要指定width,height
- openssl版本升级操作记录
- 清除浮动(clearfix hack)
- Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)
- 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 数组属性和方法
- android使用surfaceview+MediaPlayer播放视频
- Android性能之冷启动优化详析
- Android自定义View实现地铁显示牌效果
- Android自定义控件实现望远镜效果
- Android自定义View实现点赞控件
- Android自定义View实现投票进度条
- 国外Reservo一款非常棒的商业图床程序
- 详解Android v1、v2、v3签名(小结)
- Android Studio项目适配AndroidX(Android 9.0)的方法步骤
- Android自定义View实现微信语音界面
- Android仿微信录音功能(录音后的raw文件转mp3文件)
- Android基于腾讯云实时音视频仿微信视频通话最小化悬浮
- Android自定义View之RadioGroup实现跨多行显示
- Android RadioGroup多行显示效果 解决单选问题
- RadioGroup实现单选框的多行排列