今天做一个养老的项目,需要调用百度提供的服务,需要计算获取一个rtcToken,要求用到uin32 big endian,又要使用byte流(buffer),还要对buffer进行base64加密,直接放弃php进行计算,如果php可以进行计算的话,希望大佬给个思路。我直接用java去生成这个rtcToken了,然后封装成jar,让php进行调用
编写java源码,此处省略一万字,只要有输出就行
编译生成java的.class文件,编辑器不显示后缀名,黄色部分RtcToken就是生成的.class文件
编译前一定要注意:运行环境、编译环境的jdk版本一定要保持一致,否则无法执行
3、生成jar包
执行到这里,就完成jar包部分了
下载php-java-bridge,通过 JavaBridge调用jar包
下载地址:PHP/Java Bridge
1和2根据自己的版本选择,3必须下载
下载的第一个,解压之后获得JavaBridge.war,重命名为JavaBridge.jar,解压得到JavaBridge,在JavaBridge\WEB-INF\lib目录下找到JavaBridge.jar,双击执行
本地会多一个JavaBridge.log文件
将前面打包的jar包复制到java.ext.dirs指定位置
php调用
require_once "Java.inc";function getToken($appId,$appSecret,$uid,$createTime,$expireTime,$random){ $rtcToken = new Java("com.rtc.RtcToken"); $rtcTokenResult = new Java("com.rtc.rtcToken.TokenApiResult"); $rtcTokenResult = $rtcToken->getToken($appId,$appSecret,$uid,$createTime,$expireTime,$random); $token = $rtcTokenResult->getData(); return $token;}
执行结果
坑:
编译环境和运行环境不一致,jar包无法执行
Java.inc文件记得下载
php传参严格按照java的要求传递
其他高级用法待需要的时候再研究
来源地址:https://blog.csdn.net/u014626130/article/details/126427478