文档首页/ IdeaHub/ API参考/ 开发指南/ 通用接口使用概述
更新时间:2023-01-06 GMT+08:00
分享

通用接口使用概述

token为login以后返回的登录信息,每次调用新的接口都需要使用登录后的token

stringHashMap记录了访问接口的命令和接口名称的关联的键值对,后续有详细使用介绍。

private static String baseUrl = "https://192.168.32.77";
private static String token;  
private static HashMap<String, String> stringHashMap = new HashMap<String, String>();

main函数的成员变量需要修改成此次需要访问环境的IP地址。这里IP地址https://192.168.32.77仅为格式举例

主函数调用四个基础接口,initSeesionId, login, changeSeesionId 和 callMethodByName.

前三个接口分别为3.3小节登录认证的请求会话ID, 登录Login 和 改变SessionId 三个模块 , 第四个接口为反射方法, 通过反射调用Main中对应的函数接口。

每一个接口使用前都必须有initSeesionId和login的操作。

 /**
     * 主函数入口
     *
     * @param args 用户输入的参数
     */
 public static void main(String[] args) {
        args = new String[]{"WEB_CallSiteAPI","api","Change_Me"};
        if(args.length<=2){
             return;
        }
        initSeesionId();
        token = login(HttpClientUtil.sessionId, args);
        if (TextUtils.isEmpty(token)) {
            systemPrint("login failed");
            return;
        }
        changeSeesionId();
        callMethodByName(args);
    }

callMethodByName 内容如下,参数args中带有了需要访问的method名称,所有的method需要在Main的成员变量stringHashMap中。

以访问LogOut方法举例说明如下,args中带有Method参数名Logout, 则for循环中遍历stringHashMap中的所有键值对,找到LogOut中对应的Main

的成员函数名称为LogOut. 下面则是一系列反射操作,先通过路径com.device.terminal.Main获取类对象。

Method mth = obj.getClass().getDeclaredMethod(methodName, String[].class);//为需要被反射的方法,可以有参数可以无参数。
mth.invoke(obj, (Object) args);//为调用反射方法的调用逻辑。

  /**
     * 通过参数找到方法  通过方法名调用方法
     *
     * @param args 用户输入的参数
     */
    private static void callMethodByName(String[] args) {
        if (!(args.length == 3 || args.length == 4)) {
            systemPrint("Parameter error");
            return;
        }
        String methodName = null;
        for (String key : stringHashMap.keySet()) {
            if (key.contains(args[0])) {
                methodName = stringHashMap.get(key);
            }
        }
        if (TextUtils.isEmpty(methodName)) {
            systemPrint("Parameter error");
            return;
        }
        try {
            Class clz = Class.forName("com.device.terminal.Main");
            Object obj = clz.newInstance();
            if (args.length == 3) {
                // 获取无参方法
                Method mth = obj.getClass().getDeclaredMethod(methodName);
                mth.invoke(obj);
            } else if (args.length == 4) {
                // 获取有参方法
                Method mth = obj.getClass().getDeclaredMethod(methodName, String[].class);
            }
        } catch (Exception e) {
            systemPrint("Parameter error");
        }
    }

stringHashMap

 private static HashMap<String, String> stringHashMap = new HashMap<String, String>();
     static {
        stringHashMap.put("WEB_CallSiteAPI", "WEB_CallSiteAPI");
        stringHashMap.put("CancelCallAPI", "CancelCallAPI");
        stringHashMap.put("Logout", "Logout");
        stringHashMap.put("WEB_ScheduleConfAPI", "WEB_ScheduleConfAPI");
        stringHashMap.put("BaseMess", "BaseMess");
    }

由此,调用一个通用接口的使用方法总结如下。

  1. 修改main函数中args = new String[] {"","",""}中的调用命令。
  2. 添加一个被调用成员函数,在其中写函数接口。
  3. 在stringHashMap中新增一个键值对。键需要和main函数中的args = new String[] {"","",""} 的第一个参数保持一致,值需要与被调用成员函数的名称保持一致。

相关文档