腾讯直播与 JAVA整合_JAVA对接腾讯云直播如何实现 JAVA对接腾讯云直播实现代码...
JAVA对接腾讯云直播如何实现?本篇文章小编给大家分享一下JAVA对接腾讯云直播实现代码,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
签名授权
public static T TecentDoPostJsonV3(String url,String key,String secretId, TecentPublicParams header, String json, OkHttpClient httpClient, Class clazz) throws Exception {
// ************* 步骤 1:拼接规范请求串 *************
String date = DateUtils.format(new Date(Long.valueOf(header.getX_TC_Timestamp() + "000")),DateUtils.FORMAT_SHORT);
String service = url.substring(0,url.indexOf(".")); //截取服务类型 云直播是live
System.out.println(json);
String canonicalRequest ="POST\n" +
"/\n" +
"\n" +
"content-type:application/json; charset=utf-8\n" +
"host:"+url+"\n" +
"\n" +
"content-type;host\n" +
sha256Hex(json);
System.out.println(canonicalRequest);
// ************* 步骤 2:拼接待签名字符串 *************
String credentialScope = date+ "/" + service + "/" + "tc3_request";
String hashedCanonicalRequest = sha256Hex(canonicalRequest);
String algorithm = "TC3-HMAC-SHA256";
String stringToSign = algorithm + "\n" + header.getX_TC_Timestamp() + "\n" + credentialScope + "\n" + hashedCanonicalRequest;
System.out.println(stringToSign);
// ************* 步骤 3:计算签名 *************
byte[] secretDate = hmac256(("TC3" + key).getBytes(CHARSET), date);
byte[] secretService = hmac256(secretDate, service);
byte[] secretSigning = hmac256(secretService, "tc3_request");
String signature = DatatypeConverter.printHexBinary(hmac256(secretSigning, stringToSign)).toLowerCase();
System.out.println(signature);
// ************* 步骤 4:拼接 Authorization *************
String authorization = algorithm + " " + "Credential=" + secretId + "/" + credentialScope + ", "
+ "SignedHeaders=" + "content-type;host" + ", " + "Signature=" + signature;
System.out.println(authorization);
header.setAuthorization(authorization);
JSONObject jsonObject = (JSONObject)JSON.toJSON(header);
RequestBody requestBody = RequestBody.create(CONTENT_TYPE, json);
Request.Builder builder = new Request.Builder();
for (Map.Entry entry:jsonObject.entrySet()) {
if(entry.getValue()==null){
continue;
}
builder.addHeader(String.valueOf(entry.getKey()).replaceAll("_","-"),String.valueOf(entry.getValue()));
}
// 用okhttp3 拼接发送请求
try {
Response response = httpClient.newCall((builder).url("https://"+url).post(requestBody).build()).execute();
String request = response.body().string();
T t = JSON.parseObject(request, clazz);
return t;
} catch (IOException var8) {
throw new ApiProcessException(ErrorCode.HTTP_REQUEST_ERROR, var8.getMessage());
}
}
public static byte[] hmac256(byte[] key, String msg) throws Exception {
Mac mac = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKeySpec = new SecretKeySpec(key, mac.getAlgorithm());
mac.init(secretKeySpec);
return mac.doFinal(msg.getBytes(CHARSET));
}
公共参数实体类
public class TecentPublicParams {
private String X_TC_Action;
private String X_TC_Region;
private String X_TC_Timestamp = Long.toString(System.currentTimeMillis() / 1000);
private String X_TC_Version;
private String Authorization;
private String X_TC_Language = "zh-CN";
private String X_TC_Token;
public String getX_TC_Action() {
return X_TC_Action;
}
public void setX_TC_Action(String x_TC_Action) {
X_TC_Action = x_TC_Action;
}
public String getX_TC_Region() {
return X_TC_Region;
}
public void setX_TC_Region(String x_TC_Region) {
X_TC_Region = x_TC_Region;
}
public String getX_TC_Timestamp() {
return X_TC_Timestamp;
}
public void setX_TC_Timestamp(String x_TC_Timestamp) {
X_TC_Timestamp = x_TC_Timestamp;
}
public String getX_TC_Version() {
return X_TC_Version;
}
public void setX_TC_Version(String x_TC_Version) {
X_TC_Version = x_TC_Version;
}
public String getAuthorization() {
return Authorization;
}
public void setAuthorization(String authorization) {
Authorization = authorization;
}
public String getX_TC_Language() {
return X_TC_Language;
}
public void setX_TC_Language(String x_TC_Language) {
X_TC_Language = x_TC_Language;
}
public String getX_TC_Token() {
return X_TC_Token;
}
public void setX_TC_Token(String x_TC_Token) {
X_TC_Token = x_TC_Token;
}
}
调用方法
String tencentLiveApi = "live.tencentcloudapi.com";
String SECRET_KEY = "***"; //此处填写自己腾讯云key
String SECRET_ID = "***"; //此处填写自己腾讯云密匙
TecentPublicParams tecentPublicParams = new TecentPublicParams();
tecentPublicParams.setX_TC_Action("DescribeLiveStreamPublishedList"); //对应方法名
tecentPublicParams.setX_TC_Version("2018-08-01");
TreeMap keyValues = new TreeMap(); //参数
keyValues.put("DomainName","***");
keyValues.put("EndTime", DateUtils.format(new Date(),"yyyy-MM-dd'T'HH:mm:ss'Z'"));
keyValues.put("StartTime", DateUtils.format(DateUtils.addDay(new Date(),-30),"yyyy-MM-dd'T'HH:mm:ss'Z'"));
String back ="";
try {
back = LiveUtils.TecentDoPostJsonV3(tencentLiveApi,SECRET_KEY,SECRET_ID,tecentPublicParams,JSON.toJSONString(keyValues),httpClient,String.class);
} catch (Exception e) {
e.printStackTrace();
}
腾讯直播与 JAVA整合_JAVA对接腾讯云直播如何实现 JAVA对接腾讯云直播实现代码...相关推荐
- java书籍_Java程序员必看的 13 本 Java 书籍!
原文:Java程序员必看的 13 本 Java 书籍! 作者: java技术栈 关乎于程序员,除了做项目来提高自身的技术,还有一种提升自己的专业技能就是:多!看!书! 毕竟,书是学习的海洋呢!So,J ...
- JAVA整合腾讯COS(拿来即用)
JAVA整合腾讯COS实现文件上传 1.开通腾讯云对象存储服务 https://console.cloud.tencent.com/cos5 2.创建存储桶 3.密钥管理,新建密钥 4:在项目yml文 ...
- vos3000落地网关对接教学_跨国合作:Serverless Components 在腾讯云的落地和实践
导语 | Serverless Components 是 Serverless Framework 推出的最新解决⽅案,具有基础设施编排能⼒,开发者通过使⽤ Serverless Components ...
- 腾讯云 - 第三方服务商 接口, 对接人脸识别接口
文章目录 腾讯云 - 第三方服务商 接口, 对接人脸识别接口 1.引入包 2.工具类 3.识别结果段代码 4.调用示例代码 腾讯云 - 第三方服务商 接口, 对接人脸识别接口 1.引入包 import ...
- java 整合hadoop_Spark 如何摆脱java双亲委托机制优先从用户jar加载类?
1. 起源 spark的类加载及参数传递过程还是很复杂的,主要是因为他运行环境太复杂了,不同的集群管理器完全不一样,即使是同一集群管理器cluster和client也不一样,再加上这块探究还是需要一定 ...
- tomcat如何修改java版本_Java程序员必备——Tomcat配置技巧Top10
一.配置系统管理(Admin Web Application) 大多数商业化的J2EE服务器都提供一个功能强大的管理界面,且大都采用易于理解的Web应用界面.Tomcat按照自己的方式,同样提供一个成 ...
- java商城_java网上商城系统怎么样?优势又有哪些?
导读:大家都知道Java是一款非常实用的开发语言,而通过Java开发的商城吸引也因为其强大安全性能与使用性能等优势受到了很多企业商家的青睐,那么一款功能丰富的Java商城系统也自然成为... 大家都知 ...
- java 切面_Java笔试面试精心整理得到89道Spring 核心知识【收藏向】
点击上方"蓝字",关注了解更多 Spring Framework 简称 Spring,是 Java 开发中最常用的框架,地位仅次于 Java API,就连近几年比较流行的微服务框架 ...
- kettle清洗mysql数据_ETL工具Kettle使用以及与Java整合实现数据清洗
本文主要讲述kettle的使用和与Java整合,具体下载与安装请自行百度! kettle有两种脚本方式:转换和工作,工作中可以添加转换.以下以转换为例. 1.新建一个转换, 2.在工作中经常用到的是表 ...
最新文章
- VBS遍历Excel工作表的方法
- Weighted distance in sklearn KNN
- python3安装pip3-python3安装pip3的实例步骤
- jenkins搭建流程
- MR作业提交时指定第三方依赖jar
- P2761 软件补丁问题
- 用css画出一个圆圈,里面有个叉号(不能用英文字母x)
- linux字符模式分辨率grub2,Deepin 15.8系统Grub菜单分辨率低的原因及解决方案
- css 鼠标悬浮样式_【技术】CSS设置链接鼠标(失效)不能点样式
- PHP5安装好了,再附加GD库
- 超浪漫-HTML5生日祝福网页制作 ❤粉色少女系列为你定制❤ HTML+CSS+JavaScript
- newifi3刷机 php,newifi3breed解锁新路由3刷机免解锁刷breed详细方法老毛子Padavan固件...
- Win11怎么不让软件联网?Win11禁止某个软件联网的方法
- 使用CSS制作图片相框以及图片放大旋转效果
- 吃饭速度跟肥胖挂钩,吃太快容易长胖
- Android穿山甲SDK激励视频
- Time, Delays, and Deferred Work LDD3 学习笔记 + jiffies.h 分析
- 记 [GXYCTF2019]Ping Ping Ping 1
- 3D游戏建模线上和线下学习的区别
- floor和ceil函数