Java 快速接入

揭阳市榕城区赛搏技术服务工作室 ∙ hwwlyz.com2024/09/01

华网网络验证提供了官方的 Jar 封装库,方便 Java 开发者接入。

接入须知

获取方式

下载地址:https://wwds.lanzouq.com/b00oc98uidopen in new window 密码:5rqo 或者加群839808671在群文件下载SDK,有问题也可在此群交流。

鸣谢

作者:wiki 提供基础验证包源码,由官方调整优化发布

使用方式

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 {
        // 初始化 SDK
        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 (Exception e) {
                e.printStackTrace();
            }
        });

        // 开启调试模式(默认关闭)
        hw.setDebug(true);

        // 设置卡密
        hw.setCard("your_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);
        }
    }
}

SDK 配置方法

这些方法应在调用 hw.init() 之后、登录之前调用。

setDebug

设置调试模式,开启后控制台会输出每次请求的详细信息。

hw.setDebug(debug)
参数名必传类型参数说明
debugBoolean是否开启调试,默认 false

setDeviceId

设置设备唯一标识码。

hw.setDeviceId(deviceId)
参数名必传类型参数说明
deviceIdString设备码

setCallback

设置心跳失败回调。当自动心跳检测失败时(如卡密过期、被顶号等),SDK 会通过此回调通知你。

hw.setCallback(callBack)
参数名必传类型参数说明
callBackHeartbeatCallBack实现 void onHeartbeatFailed(JSONObject hret) 的接口实例

setAutoHeartbeat

设置登录成功后是否自动启动心跳线程。默认为 true

hw.setAutoHeartbeat(autoHeartbeat)
参数名必传类型参数说明
autoHeartbeatBoolean是否自动心跳,默认 true

setHeartbeatTime

设置心跳间隔时长。

hw.setHeartbeatTime(heartbeatTime)
参数名必传类型参数说明
heartbeatTimeint心跳间隔(单位:分钟),默认 2

setBackupHosts

添加备用服务器域名。当主域名连通性异常时 SDK 会自动切换。

hw.setBackupHosts(host)
参数名必传类型参数说明
hostString备用域名,如 backup.hwwlyz.com

初始化

init

初始化 SDK,必须在调用其他接口之前执行。

hw.init("appKey", "appSecret");
参数名必传类型参数说明
appKeyString开发者后台获取的 AppKey
appSecretString开发者后台获取的 AppSecret

初始化卡密

setCard

hw.setCard(card)
参数名必传类型参数说明
cardString用户填写的卡密(长度不超过45位)

初始化用户账号

setUser

hw.setUser(username, password)
参数名必传类型参数说明
usernameString用户名(长度1-20位)
passwordString用户密码(长度6-30位)

获取时间戳(网络时间)

getTimestamp

long timestamp = hw.getTimestamp()

无参数。

返回值long 类型,秒级时间戳,例:1703870486

获取登录信息

getLoginRet

获取登录成功后返回的数据,包含卡密类型、过期时间、自定义配置等。

JSONObject ret = hw.getLoginRet()

无参数。

返回值JSONObject。常用字段:

字段类型说明
cardTypeString卡密类型,例如 "月卡"
expiresString过期时间,例如 "2024-02-14 19:44:20"
expiresTslong过期时间戳(秒),例如 1702780478
configString卡密或用户自定义配置

获取心跳结果

getHeartbeatResult

获取最近一次自动心跳的结果。配合 setCallback 使用可实时感知心跳异常。

JSONObject ret = hw.getHeartbeatResult()

无参数。

返回值JSONObject,例:{"code": 0, "message": ""}

获取剩余时长

getTimeRemaining

获取当前登录态剩余有效时长。需在登录成功后调用。

long ret = hw.getTimeRemaining()

无参数。

返回值long 类型,剩余秒数,例:9000。未登录返回 0


卡密类

cardLogin

卡密登录。调用前需先 hw.setCard(card)hw.setDeviceId(deviceId)。 登录成功后,如果 autoHeartbeattrue(默认),SDK 会自动启动心跳线程。

JSONObject ret = hw.cardLogin()

无参数。

返回值JSONObject,code 为 "0" 表示成功。

cardHeartbeat

手动执行一次卡密心跳。通常情况下 SDK 会自动心跳,无需手动调用。

JSONObject ret = hw.cardHeartbeat()

无参数。

返回值JSONObject

cardLogout

卡密退出登录,会自动关闭心跳线程。

JSONObject ret = hw.cardLogout()

无参数。

返回值JSONObject,例:{"code": 0, "message": "OK"}

cardUnbindDevice

解绑当前卡密绑定的设备。需在卡密登录后调用,且开发者后台需开启设备绑定功能。

JSONObject ret = hw.cardUnbindDevice()

无参数。

返回值JSONObject,例:{"code": 0, "message": "OK"}

cardSetUnbindPassword

设置解绑密码。用于设备丢失等场景下通过密码解绑设备。需在卡密登录后调用。

JSONObject ret = hw.cardSetUnbindPassword(password)
参数名必传类型参数说明
passwordString解绑密码(6-10位数字和字母组合)

返回值JSONObject,例:{"code": 0, "message": "OK"}

cardUnbindPassword

通过解绑密码解绑设备。适用于无法在原设备登录时的情况,无需登录即可调用。

JSONObject ret = hw.cardUnbindPassword(password)
参数名必传类型参数说明
passwordString解绑密码(6-10位数字和字母组合)

返回值JSONObject,例:{"code": 0, "message": "OK"}

cardRecharge

用充值卡给卡密充值。

JSONObject ret = hw.cardRecharge(rechargeCard, usedCard)
参数名必传类型参数说明
rechargeCardString被充值的卡密(长度不超过45位)
usedCardString充值使用的卡密(长度不超过45位)

返回值JSONObject,例:{"code": 0, "message": "OK"}

getCardConfig

获取卡密的自定义配置。

JSONObject ret = hw.getCardConfig()

无参数。

返回值JSONObject

setCardConfig

修改卡密的自定义配置。

JSONObject ret = hw.setCardConfig(config)
参数名必传类型参数说明
configString自定义配置(长度不超过512位)

返回值JSONObject,例:{"code": 0, "message": "OK"}


用户类

userRegister

通过卡密注册用户账号。

JSONObject ret = hw.userRegister(username, password, card)
参数名必传类型参数说明
usernameString用户名(长度不超过20位)
passwordString用户密码(长度6-30位)
cardString注册使用的卡密(长度不超过45位)

返回值JSONObject,例:{"code": 0, "message": "ok"}

userLogin

用户登录。调用前需先 hw.setUser(username, password)。 登录成功后,如果 autoHeartbeattrue(默认),SDK 会自动启动心跳线程。

JSONObject ret = hw.userLogin()

无参数。

返回值JSONObject,code 为 "0" 表示成功。

userHeartbeat

手动执行一次用户心跳。通常情况下 SDK 会自动心跳,无需手动调用。

JSONObject ret = hw.userHeartbeat()

无参数。

返回值JSONObject

userLogout

用户退出登录,会自动关闭心跳线程。

JSONObject ret = hw.userLogout()

无参数。

返回值JSONObject,例:{"code": 0, "message": "OK"}

userChangePassword

修改用户密码。

JSONObject ret = hw.userChangePassword(username, oldPassword, newPassword)
参数名必传类型参数说明
usernameString用户名(长度不超过20位)
oldPasswordString当前密码(长度6-30位)
newPasswordString新密码(长度6-30位)

返回值JSONObject,例:{"code": 0, "message": "OK"}

userRecharge

用充值卡给用户充值。

JSONObject ret = hw.userRecharge(username, usedCard)
参数名必传类型参数说明
usernameString用户名(长度不超过20位)
usedCardString充值使用的卡密(长度不超过45位)

返回值JSONObject,例:{"code": 0, "message": "OK"}

getUserConfig

获取用户的自定义配置。

JSONObject ret = hw.getUserConfig()

无参数。

返回值JSONObject

setUserConfig

修改用户的自定义配置。

JSONObject ret = hw.setUserConfig(config)
参数名必传类型参数说明
configString自定义配置(长度不超过512位)

返回值JSONObject,例:{"code": 0, "message": "OK"}


试用类

trialLogin

试用登录。需先 hw.setDeviceId(deviceId)。 登录成功后,如果 autoHeartbeattrue(默认),SDK 会自动启动心跳线程。

JSONObject ret = hw.trialLogin()

无参数。

返回值JSONObject,code 为 "0" 表示成功。

trialHeartbeat

手动执行一次试用心跳。通常情况下 SDK 会自动心跳,无需手动调用。

JSONObject ret = hw.trialHeartbeat()

无参数。

返回值JSONObject

注意:试用登录没有独立的退出登录接口,可以调用 cardLogout()userLogout() 使用相同的退出逻辑,或者直接重启应用。


远程变量

createRemoteVar

创建远程变量。

JSONObject ret = hw.createRemoteVar(key, value)
参数名必传类型参数说明
keyString远程变量名(长度不超过64位)
valueString远程变量值(长度不超过60000位)

返回值JSONObject

updateRemoteVar

更新远程变量。

JSONObject ret = hw.updateRemoteVar(key, value)
参数名必传类型参数说明
keyString远程变量名(长度不超过64位)
valueString远程变量值(长度不超过60000位)

返回值JSONObject,例:{"code": 0, "message": "OK"}

getRemoteVar

获取远程变量。

JSONObject ret = hw.getRemoteVar(key)
参数名必传类型参数说明
keyString远程变量名(长度不超过64位)

返回值JSONObject

deleteRemoteVar

删除远程变量。

JSONObject ret = hw.deleteRemoteVar(key)
参数名必传类型参数说明
keyString远程变量名(长度不超过64位)

返回值JSONObject,例:{"code": 0, "message": "OK"}

callRemoteFun

调用远程函数。

JSONObject ret = hw.callRemoteFun(funName, params)

示例 — 假设远程函数为:

function add(a, b) {
    return a + b;
}

Java 中调用:

import com.alibaba.fastjson.JSONArray;

JSONArray params = new JSONArray();
params.add(1);
params.add(2);
JSONObject ret = hw.callRemoteFun("add", params);
if ("0".equals(ret.getString("code"))) {
    System.out.println(ret.getJSONObject("data").getString("result"));
} else {
    System.out.println(ret.getString("message"));
}
参数名必传类型参数说明
funNameString远程函数名(长度不超过64位)
paramsJSONArray参数列表,例:[1, 2]

返回值JSONObject,例:{"code": 0, "message": "OK", "data": {"result": 3}}


软件类

getSoftwareConfig

获取软件配置。

JSONObject ret = hw.getSoftwareConfig()

无参数。

返回值JSONObject

getSoftwareNotice

获取软件公告。

JSONObject ret = hw.getSoftwareNotice()

无参数。

返回值JSONObject

setSoftwareVersion

设置当前软件的本地版本号,用于后续调用 getSoftwareVersion() 检查更新。

hw.setSoftwareVersion(version)
参数名必传类型参数说明
versionString当前本地版本号,如 "v1.0.0"

getSoftwareVersion

检查软件最新版本。需先调用 hw.setSoftwareVersion(version)

JSONObject ret = hw.getSoftwareVersion()

无参数。

返回值JSONObject


Last Updated 2026/6/3 23:22:35
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.14.7