Java 快速接入
华网网络验证提供了官方的 Jar 封装库,方便 java 开发者接入。
接入须知
获取方式
下载地址:https://wwds.lanzouq.com/b00oc98uid 密码:5rqo 或者加群839808671在群文件下载SDK,有问题也可在此群交流。
鸣谢
作者:LeonXrek
提供基础验证包源码,由官方调整优化发布
使用方式
将hwsdk.jar
文件夹解压放入你的项目中即可,然后在脚本中通过 import com.hwsdk.hw; 引入。 压缩包中的main.java
是一个示例。 一个示例:
package com.hw.test;
import com.hwsdk.hw;
import com.alibaba.fastjson.JSONObject;
public class Main {
public static void main(String[] args) throws Exception {
//初始化代码
hw.init("APPKEY", "APPSECRET");
//设置回调
hw.setCallback(jsonObject -> {
System.out.println(jsonObject.toJSONString());
if (jsonObject.getInteger("code")==10207){
System.out.println("心跳下线");
System.exit(0);
}
try {
System.out.println("心跳失败,2s后尝试重登...");
Thread.sleep(2000);
JSONObject ret1 = hw.cardLogin();
if (ret1.getInteger("code")==0){
System.out.println("重新登录成功");
}else{
System.out.println(ret1.getString("message")); // 重登失败
System.exit(0);
}
} catch (InterruptedException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
});
//设置卡密
hw.setCard("card");
//设置设备ID
hw.setDeviceId("javaTest");
//进行登录
JSONObject ret = hw.cardLogin();
if (ret.getInteger("code")!=0){
System.out.println(ret.getString("message")); // 登录失败
System.exit(0);
}
JSONObject loginRet=hw.getLoginRet();
System.out.println("卡密类型:"+ loginRet.getString("cardType"));
System.out.println("卡密到期时间:"+ loginRet.getString("expires"));
//hold主线程不要退出,记得删除,后面是你的代码
while (true){
System.out.print("卡密到期剩余:");
System.out.print( hw.getTimeRemaining());
System.out.println(" s");
System.out.print("心跳结果(非零则心跳异常):");
System.out.println( hw.getHeartbeatResult().getInteger("code"));
Thread.sleep(5000);
}
}
}
可更改变量
- hw.setDebug(): bool型,默认为true,开启后会在控制台输出每次请求的详细信息,方便调试
- hw.setDeviceId(): string型,请设置设备码ID
可获取变量
TIP
注意 以下变量都为登录成功后才能取到值的。
- hw.getLoginRet.getString("cardType") : 卡密类型,例如:月卡
- hw.getLoginRet.getString("expires") : 过期时间,例如:2024-02-14 19:44:20
- hw.getLoginRet.getString("expiresTs") : 过期时间戳,例如:1702780478
- hw.getLoginRet.getString("config") : 卡密或用户配置,开发者可通过接口自定义的
初始化
init
hw.init("appKey", "appSecret");
初始化卡密
语法
hw.setCard(card)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
card | 是 | string | 用户填写的卡密(长度不超过45位) |
初始化用户账号
语法
hw.setUser(username, password)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
username | 是 | string | 用户名(长度1-20位) |
password | 是 | string | 用户密码(长度6-30位) |
获取时间戳(网络时间)
语法
let timestamp = hw.getTimestamp()
参数
无
返回值
数字类型,例:1703870486
获取心跳结果
语法
let ret = hw.getHeartbeatResult()
参数
无
返回值
JSON类型,例:{"code": 0, "message": "","data":null}
获取剩余时长
语法
ret = hw.getTimeRemaining()
参数
无
返回值
数字类型,剩余多少秒,例:9000
卡密登录
TIP
注意 调用此接口前需调用 hw.setCard(card) 初始化卡密 登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。 开发者只需在自己的脚本中通过调用 hw.getHeartbeatResult() 获取当前心跳结果。
语法
ret = hw.CardLogin() //返回登录后详情数据
参数
无
返回值
JSON类型,例:参考接口返回
卡密退出登录
语法
ret = hw.cardLogout() //返回服务器数据
参数
无
返回值
JSON类型,例:{"code": 0, "message": "OK"}
卡密解绑设备
TIP
注意 请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。 该接口只能在卡密登录后调用。更多说明
语法
ret = hw.cardUnbindDevice()
参数
无
返回值
JSON类型,例:{"code": 0, "message": "OK"}
卡密设置解绑密码
TIP
说明 请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。 该密码用于绑定设备丢失或者其它原因导致无法在老设备登录时解绑设备。
语法
ret = hw.setCardUnbindPassword(password)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
password | 是 | string | 解绑密码(6-10位数字和字母组合的字符串) |
返回值
JSON类型,例:{"code": 0, "message": "OK"} 中文:bool类型 返回 treu 或 fasle
卡密通过密码解绑设备
TIP
说明 请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。 该接口用于绑定设备丢失或者其它原因导致无法在老设备登录时,通过解绑密码解绑设备。
语法
ret = hw.cardUnbindDeviceByPassword(password)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
password | 是 | string | 解绑密码(6-10位数字和字母组合的字符串) |
返回值
JSON类型,例:{"code": 0, "message": "OK"}
卡密充值(以卡密充卡密)
语法
ret = hw.cardRecharge(card, useCard)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
card | 是 | string | 被充值的卡密(长度不超过45位) |
useCard | 是 | string | 充值使用的卡密(长度不超过45位) |
返回值
JSON类型,例:{"code": 0, "message": "OK"}
用户注册(通过卡密)
语法
ret = hw.userRegister(username, password, card)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
username | 是 | string | 用户名(长度不能超过20位) |
password | 是 | string | 用户密码(长度6-30位) |
card | 是 | string | 注册使用的卡密(长度不超过45位) |
返回值
JSON类型,例:{"code": 0, "message": "ok"}
用户登录
TIP
注意 调用此接口前需调用 hw.setUser(username, password) 初始化用户账号密码 登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。 开发者只需在自己的脚本中通过调用 hw.getHeartbeatResult() 获取当前心跳结果。
语法
ret = hw.userLogin()
参数
无
返回值
JSON类型,例:参考接口返回
用户退出登录
语法
ret = hw.userLogout()
参数
无
返回值
JSON类型,例:{"code": 0, "message": "OK"}
用户修改密码
语法
ret = hw.userChangePassword(username, password, newPassword)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
username | 是 | string | 用户名(长度不能超过20位) |
password | 是 | string | 当前密码(长度6-30位) |
newPassword | 是 | string | 新密码(长度6-30位) |
返回值
JSON类型,例:{"code": 0, "message": "OK"}
用户充值(通过卡密)
语法
ret = hw.userRecharge(username, card)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
username | 是 | string | 用户名(长度不能超过20位) |
card | 是 | string | 充值使用的卡密(长度不超过45位) |
返回值
JSON类型,例:{"code": 0, "message": "OK"}
试用登录
TIP
注意 登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。 只需在自己的脚本中通过调用 hw.getHeartbeatResult() 获取当前心跳结果。
语法
ret = hw.trialLogin()
参数
无
返回值
JSON类型,例:参考接口返回
试用退出登录
语法
ret = hw.trialLogout()
参数
无
返回值
JSON类型,例:{"code": 0, "message": "OK"}
获取卡密配置
TIP
注意 调用此接口前需调用 hw.setCard(card) 初始化卡密
语法
ret = hw.getCardConfig()
参数
无
返回值
JSON类型,例:参考接口返回
更改卡密配置
TIP
注意 调用此接口前需调用 hw.setCard(card) 初始化卡密
语法
ret = hw.updateCardConfig(config)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
config | 是 | string | 自定义配置(长度不能超过512位) |
返回值
JSON类型,例:{"code": 0, "message": "OK"}
获取用户配置
TIP
注意 调用此接口前需调用 hw.setUser(username, password) 初始化用户账号密码
语法
ret = hw.getUserConfig()
参数
无
返回值
JSON类型,例:参考接口返回
更改用户配置
注意 调用此接口前需调用 hw.setUser(username, password) 初始化用户账号密码
语法
ret = hw.updateUserConfig(config)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
config | 是 | string | 自定义配置(长度不能超过512位) |
返回值
JSON类型,例:{"code": 0, "message": "OK"}
获取软件配置
语法
ret = hw.getSoftwareConfig()
参数
无
返回值
JSON类型,例:参考接口返回
获取软件公告
语法
ret = hw.getSoftwareNotice()
参数
无
返回值
JSON类型,例:参考接口返回
获取软件最新版本
语法
ret = hw.getSoftwareLatestVersion(current_ver)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
current_ver | 否 | string | 当前本地的版本(长度不能超过30位)空默认返回 发布版本 |
返回值
JSON类型,例:参考接口返回
远程变量
获取远程变量
语法
ret = hw.getRemoteVar(key)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
key | 是 | string | 远程变量名(长度不能超过64位) |
返回值
JSON类型,例:参考接口返回
设置远程变量
语法
ret = hw.updateRemoteVar(key, value)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
key | 是 | string | 远程变量名key(长度不能超过64位) |
value | 是 | string | 远程变量值value(长度不能超过60000位) |
返回值
JSON类型,例:{"code": 0, "message": "OK"}
创建远程变量
语法
ret = hw.createRemoteVar(key,value)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
key | |||
是 | string | 远程变量名key(长度不能超过64位) | |
value | 是 | string | 远程变量值value(长度不能超过60000位) |
返回值
JSON类型,例:参考接口返回
删除远程变量
语法
ret = hw.deleteRemoteVar(key)
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
key | 是 | string | 远程变量名key(长度不能超过64位) |
返回值
JSON类型,例:{"code": 0, "message": "OK"}
调用远程函数
语法
ret = hw.callRemoteFunc(funName, params)
示例
远程函数为:
function add(a, b) {
return a + b;
}
脚本中调用:
ret = hw.callRemoteFunc("add", [1, 2])
if (ret.code == 0) {
logd(ret.data["result"]);
} else {
logd(ret.message);
}
参数
参数名 | 必传 | 类型 | 参数说明 |
---|---|---|---|
funName | 是 | string | 远程函数名(长度不能超过64位) |
params | 是 | array | 参数列表,例:Array(1, 2) |
返回值
JSON类型,例:{"code": 0, "message": "OK", "data": {"result": 3}}
其他功能
获取模块版本
语法
ret = hw.getSdkVersion()
返回值
字符串 例:v1.0.0