# 口袋学习机文档 **Repository Path**: wsht225/learn_machine_document ## Basic Information - **Project Name**: 口袋学习机文档 - **Description**: 口袋学习机文档 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-02 - **Last Updated**: 2022-12-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 加密规则 ``` public void userScore() { //用于获取signature SortedMap items = new TreeMap<>(); items.put("appId", "rooboapi"); items.put("timestamp", "1624282817"); items.put("nonstr", "X6SH3YeRTs"); items.put("name", "abcd152426"); items.put("secret", "appsecret的值"); String signature = signature(items); System.out.println(sign); //请求参数设置 MultiValueMap paramMap = new LinkedMultiValueMap<>(); paramMap.add("appId", "jxwapi"); paramMap.add("timestamp", "1624282817"); paramMap.add("nonce", "X6SH3YeRTs"); paramMap.add("sign", sign); paramMap.put("name", "abcd152426"); //这里调用我们的服务 } public static String signature(SortedMap items){ StringBuilder forSign= new StringBuilder(); for(String key:items.keySet()){ forSign.append(key).append("=").append(items.get(key)).append("&"); } forSign.setLength(forSign.length()-1); return encryptSHA1(forSign.toString()); } public static String encryptSHA1(String content){ try { MessageDigest digest = MessageDigest.getInstance("SHA-1"); digest.update(content.getBytes(StandardCharsets.UTF_8)); byte[] messageDigest = digest.digest(); StringBuilder hexString = new StringBuilder(); for (byte b : messageDigest) { String shaHex = Integer.toHexString(b & 0xFF); if (shaHex.length() < 2) { hexString.append(0); } hexString.append(shaHex); } return hexString.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; } ``` ## GET 获取设备绑定二维码 ``` http://{host}/api/learn_machine/qrcode/jxw/get?name=abc_http_test&nonstr=abc12%2B_3123&sign=dc97d42aaba0f09edc7fe966332304b2f4f389d2×tamp=1667377365 ``` - Query Params | key|value|desc| |---|---|---| |appId|jxwapi|appid| |nonstr|abc123123|随机字符串| |name|设备序列号|jxwsnno_123123123 | |timestamp|1667377365|时间戳| |sign|dc97d42aaba0f09edc7fe966332304b2f4f389d2|签名| - Example ``` GET /api/learn_machine/qrcode/jxw/get?name=abc_http_test&nonstr=abc12%2B_3123&sign=dc97d42aaba0f09edc7fe966332304b2f4f389d2×tamp=1667377365 HTTP/1.1 Host: http://roobo-smart.roobo.net { "result": 0, "msg": "ok", "desc": "", "_reqid": "cdh2i4a4pm8sjk33nmv0", "data": { "qrcode": "http://abc.123.com?s=e9cbb5695a3979a937cb99109085c88bc5dca50dd4861b19582d46b6fbf5b4808a8877eb204a730dc174e856f91497f0bad98b2d42a865c3ef2d77cbc991487cbcc192243446d85871b6364050a2421e", "expiredAt":3600 } } ``` ## 获取设备绑定状态 ``` http://{host}/api/device/jxw/bind-stat?appId=jxwapi&nonstr=abc123123&name=jxw_device_id×tamp=1667959187&sign=dc97d42aaba0f09edc7fe966332304b2f4f389d2 ``` - Query Params |key|value|desc| |---|---|---| |appId|jxwapi|appid| |nonstr|abc123123|随机字符串| |name|设备序列号|jxwsnno_123123123 | |timestamp|1667377365|时间戳| |sign|dc97d42aaba0f09edc7fe966332304b2f4f389d2|签名| - Example ``` GET /api/device/jxw/bind-stat?appId=jxwapi&nonstr=abc123123&name=jxw_device_id×tamp=1667959187&sign=dc97d42aaba0f09edc7fe966332304b2f4f389d2 HTTP/1.1 Host: http://roobo-smart.roobo.net { "result": 0, "msg": "ok", "desc": "", "_reqid": "cdlgh3a4pm8ps79eqi3g", "data": { "isBind": 1, "userInfo": { "appUserId": "xW:4369d41d8f71b64c241efdade8337857", "mobile": "185****4520", "uid": 4 } } } ``` ## 学习记录同步 ``` http://{host}api/learn_machine/report/jxw/reportor/report/sync?appId=jxwapi&nonstr=abc123123×tamp=1667959187&sign=dc97d42aaba0f09edc7fe966332304b2f4f389d2 ``` - Query Params |key|value|desc| |---|---|---| |appId|jxwapi|appid| |nonstr|abc123123|随机字符串| |timestamp|1667377365|时间戳| |sign|dc97d42aaba0f09edc7fe966332304b2f4f389d2|签名| - Body (raw json) ``` 学习报告内容 ```