这篇文章主要介绍了Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)对接腾讯云直播的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
签名授权
公共静态T TecentDoPostJsonV3(字符串url,字符串钥匙,字符串secretId,TecentPublicParams头,字符串json,OkHttpClient httpClient,Class clazz)抛出异常{
//************* 步骤1:拼接规范请求串*************
String date=DateUtils.format(新日期(长。(标头的值。getx _ TC _ Timestamp()' 000 ')、DateUtils .FORMAT _ SHORT);
String service=url.substring(0,url.indexOf(' . '))));//截取服务类型云直播是活着
系统。出去。println(JSON);
String canonicalRequest='POST\n '
/\n '
\n '
内容类型:应用程序/JSON;charset=utf-8\n '
主机:" URL"\ n
\n '
内容类型;主机\n '
sha 256 hex(JSON);
系统。出去。println(规范请求);
//************* 步骤2:拼接待签名字符串*************
string credential scope=date '/' service '/' ' tc3 _ request ';
string hashedCanonicalRequest=sha 256 hex(规范请求);
字符串算法=' TC3-HMAC-沙256 ';
string string to sign=algorithm ' \ n '头。getx _ TC _ Timestamp()' \ n '凭据范围' \ n ' hashedCanonicalRequest
系统。出去。println(string to sign);
//************* 步骤3:计算签名*************
byte[] secretDate=hmac256(('TC3 '键)。getBytes(CHARSET),date);
byte[]secretService=hmac 256(保密日期,服务);
byte[]secretSigning=hmac 256(特勤局,' tc3 _ request ');
字符串签名=数据类型转换器。打印十六进制二进制(hmac 256(秘密签名,stringToSign)).toLowerCase();
System.out.println(签名);
//************* 步骤4:拼接授权************
字符串授权=算法' ' '凭据=' secretId '/' credentialScope ','
签名头=" " content-type;主机' ',' '签名='签名;
System.out.println(授权);
header.setAuthorization(授权);
JSON对象JSON对象=(JSON对象)JSON。to JSON(表头);
请求正文请求正文=请求正文。create(CONTENT _ TYPE,JSON);
请求。构建器构建器=新请求. builder();
对于(图entry入口:JSON对象。条目集()){
if(entry.getValue()==null){
继续;
}
建筑商。添加标题(字符串。(条目的值。getkey()).replaceAll('_ ','-'),字符串。(条目的值。getvalue());
}
//用okhttp3拼接发送请求
尝试{
响应response=http客户端。新呼叫((生成器)。url('https://' url).post(请求体).build()).执行();
字符串request=response.body().string();
T t=JSON.parseObject(request,clazz);
return t;
} catch (IOException var8) {
引发新的ApiProcessException(错误代码HTTP_REQUEST_ERROR,var 8。getmessage());
}
}
公共静态byte[] hmac256(byte[] key,字符串msg)抛出异常{
MAC MAC=MAC。getinstance(' HMA csha 256 ');
SecretKeySpec SecretKeySpec=new SecretKeySpec(key,MAC。getalgorithm());
麦克。init(secretKeySpec);
返回麦克。做最后(消息。getbytes(CHARSET));
}
公共参数实体类
公共类TecentPublicParams {
私有字符串X _ TC _ Action
私有字符串X _ TC _区域
私有字符串X _ TC _时间戳=long。tostring(系统。当前时间millis()/1000);
私有字符串X _ TC _版本
私有字符串授权;
私有字符串x _ TC _ Language=' zh-CN ';
私有字符串X _ TC _令牌
公共字符串getX_TC_Action() {
返回X _ TC _ Action
}
public void setX _ TC _ Action(String x _ TC _ Action){
X _ TC _ Action=x _ TC _ Action
}
公共字符串getX_TC_Region() {
返回X _ TC _区域
}
public void setX _ TC _ Region(String x _ TC _ Region){
x _ TC _区域=x _ TC _区域;
}
公共字符串getX_TC_Timestamp() {
返回X _ TC _时间戳
}
public void setX _ TC _ Timestamp(String x _ TC _ Timestamp){
X _ TC _时间戳=x _ TC _时间戳
}
公共字符串getX_TC_Version() {
返回X _ TC _版本
}
public void setX _ TC _ Version(String x _ TC _ Version){
x _ TC _版本=x _ TC _版本;
}
公共字符串getAuthorization() {
退货授权;
}
public void setAuthorization(字符串授权){
授权=授权;
}
公共字符串getX_TC_Language() {
返回X _ TC _语言
}
public void setX _ TC _ Language(String x _ TC _ Language){
X _ TC _语言=x _ TC _语言
}
公共字符串getX_TC_Token() {
返回X _ TC _令牌
}
public void setX _ TC _ Token(String x _ TC _ Token){
X _ TC _ Token=x _ TC _ Token
}
}
调用方法
string tencentLiveApi=' live。腾讯云api。com’;
String SECRET _ KEY=' * * *//此处填写自己腾讯云键
String SECRET _ ID=' * * *//此处填写自己腾讯云密匙
TecentPublicParams TecentPublicParams=new TecentPublicParams();
tecentpublicparams。setx _ TC _ Action(' describelivestreampublished list ');//对应方法名
tecentpublicparams。setx _ TC _ Version(' 2018-08-01 ');
TreeMap键值=new TreeMap();//参数
keyValues.put('DomainName ',' * * * ');
keyValues.put('EndTime ',DateUtils.format(new Date(),' yyyy-MM-DD ' t ' hh:MM:ss ' z ' '));
keyValues.put('StartTime ',dateutils。格式(dateutils。addday(新日期(),-30),' yyyy-MM-DD ' t ' hh:MM:ss ' z ' ');
string back=
尝试{
back=LiveUtils .tecentdopostjsonv 3(tencentLiveApi,SECRET_KEY,SECRET_ID,tecentPublicParams,JSON.toJSONString(keyValues),httpClient,String。类);
} catch(异常e) {
e。printstacktrace();
}
到此这篇关于Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)对接腾讯云直播的实现的文章就介绍到这了,更多相关Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)腾讯云直播内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。