最近疫情严重,公司准备出一个在线视频会议功能,需要调用腾讯会议的API,经过查看腾讯的api文档和与腾讯技术人员交流,终于能成功调用Api接口了!

腾讯会议官方API:https://cloud.tencent.com/document/product/1095/42407

首先第一步需要申请腾讯 API 接入

申请好了以后,会邮件发给你APPID,SecretId,SecretKey三个参数。

我们以创建会议为例,步骤如下:

一、生成body参数

        //body参数String req_body="{\n" +"\t\"userid\": \"tester\",\n" +"\t\"instanceid\": 1,\n" +"\t\"subject\": \"tester's meeting\",\n" +"\t\"type\": 0,\n" +"\t\"hosts\": [{\n" +"\t\t\"userid\": \"tester\"\n" +"\t}],\n" +"\t\"start_time\": \""+createTime+"\",\n" +"\t\"end_time\": \""+createtomorrow+" \",\n" +"\t\"settings \": {\n" +"\t\t\"mute_enable_join \": true,\n" +"\t\t\"allow_unmute_self \": false,\n" +"\t\t\"mute_all \": false,\n" +"\t\t\"host_video \": true,\n" +"\t\t\"participant_video \": false,\n" +"\t\t\"enable_record \": false,\n" +"\t\t\"play_ivr_on_leave\": false,\n" +"\t\t\"play_ivr_on_join\": false,\n" +"\t\t\"live_url\": false\n" +"\t}\n" +"}";

二、生成签名

String num="";//随机数
String signature = sign(SecretId, SecretKey, "POST", num, createTime, uri, req_body);

三、请求

 String code=doPost(url,Content_Type,SecretId,createTime,num,appId,signature,datas);

完整代码如下:

package com.jbox.common.utils;import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
import java.util.Calendar;
import java.util.Date;/*** @author huangting* @version 1.0* @date 17:43 2020/4/8*/
public class TencentUtil {public static String createMeetings() throws IOException, InvalidKeyException, NoSuchAlgorithmException {String uri="/v1/meetings";String SecretId="这里请输入你们公司的SecretId";String SecretKey="这里请输入你们公司的SecretKey";String appId="这里请输入你们公司的appId";String url="https://api.meeting.qq.com/v1/meetings";int num=617877739;Date today=  new  Date();Calendar c = Calendar.getInstance();c.setTime(new  Date());//今天c.add(Calendar.DAY_OF_MONTH,1);Date tomorrow=c.getTime();//这是明天int createTime = getSecondTimestamp(today);int createtomorrow = getSecondTimestamp(tomorrow);//body参数String req_body="{\n" +"\t\"userid\": \"tester\",\n" +"\t\"instanceid\": 1,\n" +"\t\"subject\": \"tester's meeting\",\n" +"\t\"type\": 0,\n" +"\t\"hosts\": [{\n" +"\t\t\"userid\": \"tester\"\n" +"\t}],\n" +"\t\"start_time\": \""+createTime+"\",\n" +"\t\"end_time\": \""+createtomorrow+" \",\n" +"\t\"settings \": {\n" +"\t\t\"mute_enable_join \": true,\n" +"\t\t\"allow_unmute_self \": false,\n" +"\t\t\"mute_all \": false,\n" +"\t\t\"host_video \": true,\n" +"\t\t\"participant_video \": false,\n" +"\t\t\"enable_record \": false,\n" +"\t\t\"play_ivr_on_leave\": false,\n" +"\t\t\"play_ivr_on_join\": false,\n" +"\t\t\"live_url\": false\n" +"\t}\n" +"}";//生成签名String signature = sign(SecretId, SecretKey, "POST", "617877739", String.valueOf(createTime), uri, req_body);System.out.println("我是签名:"+signature);String Content_Type="application/json";String datas = req_body;String code=doPost(url,Content_Type,SecretId,createTime,num,appId,signature,datas);System.out.println(code);return code;}public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException, IOException {String code=createMeetings();}private static String doPost(String urlPath,String Content_Type,String SecretId,int createTime,int num,String appId,String signature,String datas) throws IOException {StringBuilder sub = new StringBuilder();// 建立连接try {URL url = new URL(urlPath);HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 设置连接请求属性postconn.setDoOutput(true);conn.setDoInput(true);// 忽略缓存//conn.setUseCaches(false);conn.setRequestMethod("POST");conn.setRequestProperty("Content-Type", "application/json");conn.setRequestProperty("X-TC-Key", SecretId);conn.setRequestProperty("X-TC-Timestamp", String.valueOf(createTime));conn.setRequestProperty("X-TC-Nonce", String.valueOf(num));conn.setRequestProperty("AppId", appId);conn.setRequestProperty("X-TC-Signature", signature);System.out.println(signature);DataOutputStream out =new DataOutputStream(conn.getOutputStream());out.write(datas.getBytes());out.flush();out.close();// 定义BufferedReader输入流来读取URL的响应int code = conn.getResponseCode();System.out.print("====="+conn.getResponseMessage());if (HttpURLConnection.HTTP_OK == code) {BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line;while ((line = in.readLine()) != null) {sub.append(line);}in.close();}return sub.toString();} catch (IOException e) {sub = new StringBuilder();System.out.println("调用kettle服务失败:"+";urlPath="+urlPath+";data:"+urlPath+"Message:"+e.getMessage());}return sub.toString();}public static int getSecondTimestamp(Date date){if (null == date) {return 0;}String timestamp = String.valueOf(date.getTime());int length = timestamp.length();if (length > 3) {return Integer.valueOf(timestamp.substring(0,length-3));} else {return 0;}}private static String HMAC_ALGORITHM = "HmacSHA256";private static char[] HEX_CHAR = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};static String bytesToHex(byte[] bytes) {char[] buf = new char[bytes.length * 2];int index = 0;for (byte b : bytes) {buf[index++] = HEX_CHAR[b >>> 4 & 0xf];buf[index++] = HEX_CHAR[b & 0xf];}return new String(buf);}/*** 生成签名,开发版本oracle jdk 1.8.0_221** @param secretId        邮件下发的secret_id* @param secretKey       邮件下发的secret_key* @param httpMethod      http请求方法 GET/POST/PUT等* @param headerNonce     X-TC-Nonce请求头,随机数* @param headerTimestamp X-TC-Timestamp请求头,当前时间的秒级时间戳* @param requestUri      请求uri,eg:/v1/meetings* @param requestBody     请求体,没有的设为空串* @return 签名,需要设置在请求头X-TC-Signature中* @throws NoSuchAlgorithmException e* @throws InvalidKeyException      e*/static String sign(String secretId, String secretKey, String httpMethod, String headerNonce, String headerTimestamp, String requestUri, String requestBody)throws NoSuchAlgorithmException, InvalidKeyException {String tobeSig =httpMethod + "\nX-TC-Key=" + secretId + "&X-TC-Nonce=" + headerNonce + "&X-TC-Timestamp=" + headerTimestamp + "\n" + requestUri + "\n" + requestBody;Mac mac = Mac.getInstance(HMAC_ALGORITHM);SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), mac.getAlgorithm());mac.init(secretKeySpec);byte[] hash = mac.doFinal(tobeSig.getBytes(StandardCharsets.UTF_8));String hexHash = bytesToHex(hash);return new String(Base64.getEncoder().encode(hexHash.getBytes(StandardCharsets.UTF_8)));}
}

Java调用腾讯会议Api示例相关推荐

  1. java调用腾讯会议api,开会录制问题

    最近公司项目要求,需要调用腾讯会议api进行开会,并且要查看录制文件,会议记录等功能.研究了好一番,总算是搞定了,期间由于网上的实例太少,并且讲的不清楚,还特地询问了腾讯客服!不得不说,大公司的客服就 ...

  2. 调用腾讯会议API创建会议

    测了好久, 主要就是生成签名参数注意一些, 下面是我测试成功的案例, 如果还不成功, 可以找腾讯客服, 他们会很耐心的解决你的问题 import java.io.BufferedReader; imp ...

  3. Java腾讯会议api接口,创建会议、查询会议,取消会议调用实例,以及踩过的坑

    最近公司需要做一个腾讯会议API的对接,经过查看官方文档和腾讯相关技术人员周旋~~以及不断踩坑,终于在我的不懈努力下,成功将API接口调通了 腾讯会议API接口文档:https://cloud.ten ...

  4. Java调用有道翻译API包括APPID/密钥地址注册

    Java调用有道翻译API 因为上次发的资源用的我的APPID 导致我的服务已经停用了-- 现在把地址也一并奉上 希望都可以自己注册. APPID/密钥 注册地址:http://ai.youdao.c ...

  5. html调用腾讯地图定位当前位置,vue web项目中调用腾讯地图API获取当前位置的经纬度...

    vue web项目中调用腾讯地图API获取当前位置的经纬度 vue web项目中调用腾讯地图API获取当前位置的经纬度 在main.js 中添加一下代码 import axios from 'axio ...

  6. 微信小程序调用腾讯地图API进行驾车路线规划

    微信小程序调用腾讯地图API进行驾车路线规划 申请key 下载sdk 实现代码 遇到的问题 申请key 微信小程序的地图api是非常有限的,所以部分功能实现需要调用地图api.使用腾讯地图api过程如 ...

  7. 调用腾讯地图API、高德地图API 获取当前地理位置、经纬度

    调用腾讯地图API.高德地图API 获取当前地理位置.经纬度 web开发中,很多情况下都会需要获取当前位置的经纬度,在网上找了几个不同的地图,最终找到兼容比较好的腾讯地图API 1.调用腾讯地图API ...

  8. java调用kettle例子_Kettle API - Java调用示例

    Kettle API - Java调用示例 对向前兼容性的推荐:如果想要动态地创造Transformation (例如:从元数据),使用XML文件方法(KTR)而不是使用API.XML文件兼容Kett ...

  9. 大聪明教你学Java | 调用腾讯云短信接口,实现短信通知

    前言 提到短信接口,相信每一位程序猿都不会陌生,它可以来帮助我们实现短信验证码.短信通知等等功能,刚好最近在帮朋友开发一套会员管理系统,里面也集成了短信功能(短信接口平台选择的是腾讯云平台),借此机会 ...

最新文章

  1. 【Java学习笔记之五】java数组详解
  2. how to learn
  3. nagios整合ganglia实现hadoop、Hbase监控及手机短信报警
  4. OpenCV在图片和视频中的人脸检测
  5. Python3爬虫新手实践及代码、经验分享
  6. 一文带你了解降压型稳压芯片原理
  7. python如何更改背景颜色_python背景颜色,python改背景色
  8. HTML5酷炫动画集锦
  9. ios课堂派怎么提交附件_iOS怎么在课堂派上传文件?
  10. QQ群、讨论组上传文件,由于网络原因上传失败?
  11. Oracle 19c升级路径与QA
  12. PyTorch深度学习——PyCharm中使用matplotlib画3D曲面图
  13. matlab二元多项式求值,matlab多项式代入求值
  14. Java学习-面向对象进阶二
  15. Material UI 带复选框表格获取选中值(索引)
  16. 网络RTK无人机上机测试
  17. 在一家信息安全公司工作是什么感受?
  18. composer详解
  19. 机器学习教会我们的6个道理
  20. 聊一聊单片机和服务器

热门文章

  1. 怎样防范vbs脚本病毒
  2. Symbian Belle短信备份程序
  3. 采集淘宝API数据,抓取淘宝商品资料无需申请appkey
  4. 几款安卓人气手机数据备份软件体验
  5. 2019——我的故事
  6. linux 图形化创建文件,Arronax - 在Ubuntu中创建桌面启动器的图形工具
  7. VUE + idb-js 应用 indexDB
  8. 发票打印JAVA是什么_发票打印方向解决方案
  9. 开放共建,长安链开源社区获中国科协“科创中国”优秀开源社区奖
  10. Windows下安装图片标注工具LabelImg遇到的问题及解决办法