今天做一个养老的项目,需要调用百度提供的服务,需要计算获取一个rtcToken,要求用到uin32 big endian,又要使用byte流(buffer),还要对buffer进行base64加密,直接放弃php进行计算,如果php可以进行计算的话,希望大佬给个思路。我直接用java去生成这个rtcToken了,然后封装成jar,让php进行调用
1、编写java源码,此处省略一万字,只要有输出就行
2、编译生成java的.class文件,编辑器不显示后缀名,黄色部分RtcToken就是生成的.class文件
编译前一定要注意:运行环境、编译环境的jdk版本一定要保持一致,否则无法执行
3、生成jar包
执行到这里,就完成jar包部分了
3、下载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指定位置
4、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;
}
执行结果
坑:
1、编译环境和运行环境不一致,jar包无法执行
2、Java.inc文件记得下载
3、php传参严格按照java的要求传递
4、其他高级用法待需要的时候再研究