tjx
2025-10-30 325437ff8509c8ae19da9e060272e1e12f2ab228
src/main/java/com/gs/xiaomi/service/BCS101ApiService.java
@@ -51,15 +51,15 @@
            // 1. 序列化Body为JSON字符串
            String bodyStr = objectMapper.writeValueAsString(request);
            System.out.println("1. Body JSON: " + bodyStr);
            //System.out.println("1. Body JSON: " + bodyStr);
            // 2. MD5签名: sign = MD5(appid + bodyStr + appkey)
            String appId = DataAcquisitionConfiguration.BCS_APP_ID;
            String appKey = DataAcquisitionConfiguration.BCS_APP_Key;
            String signString = appId + bodyStr + appKey;
            String sign = DigestUtil.md5Hex(signString).toUpperCase();
            System.out.println("2. 签名字符串: " + signString);
            System.out.println("3. MD5签名: " + sign);
            //System.out.println("2. 签名字符串: " + signString);
            //System.out.println("3. MD5签名: " + sign);
            // 3. 构建X5Header
            X5Header header = new X5Header(appId, sign);
@@ -67,24 +67,24 @@
            // 4. 构建X5Request
            X5Request x5Request = new X5Request(header, bodyStr);
            String x5RequestJson = objectMapper.writeValueAsString(x5Request);
            System.out.println("4. X5Request JSON: " + x5RequestJson);
            //System.out.println("4. X5Request JSON: " + x5RequestJson);
            // 5. Base64编码整个X5Request
            String base64Data = X5StringUtils.encodeBase64(x5RequestJson);
            System.out.println("5. Base64编码: " + base64Data);
            //System.out.println("5. Base64编码: " + base64Data);
            // 6. URL编码
            String urlEncodedData = URLEncoder.encode(base64Data, "UTF-8");
            System.out.println("6. URL编码: " + urlEncodedData);
           // System.out.println("6. URL编码: " + urlEncodedData);
            // 7. 构建form表单数据: data=url编码(base64编码)的数据
            String formData = "data=" + urlEncodedData;
            System.out.println("7. Form数据: " + formData);
            //System.out.println("7. Form数据: " + formData);
            // 8. Basic Auth认证
            String credentials = DataAcquisitionConfiguration.BCS_USER_NAME + ":" + DataAcquisitionConfiguration.BCS_PWD;
            String auth = X5StringUtils.encodeBase64(credentials);
            System.out.println("8. Basic Auth: Basic " + auth);
           // System.out.println("8. Basic Auth: Basic " + auth);
            // 9. 构建HTTP请求 - 严格按照C#代码的请求格式
            RequestBody body = RequestBody.create(formData, MediaType.parse("application/x-www-form-urlencoded"));
@@ -98,31 +98,31 @@
                    .addHeader("Pragma", "no-cache")
                    .build();
            System.out.println("9. 发送X5协议请求到: " + DataAcquisitionConfiguration.BCS_101_URL);
            //System.out.println("9. 发送X5协议请求到: " + DataAcquisitionConfiguration.BCS_101_URL);
            // 10. 执行请求
            try (Response response = client.newCall(httpRequest).execute()) {
                System.out.println("10. HTTP状态码: " + response.code());
                System.out.println("11. 响应头: " + response.headers());
               //System.out.println("10. HTTP状态码: " + response.code());
               //System.out.println("11. 响应头: " + response.headers());
                if (response.body() != null) {
                    String responseBody = response.body().string();
                    System.out.println("12. 原始响应: " + responseBody);
                    //System.out.println("12. 原始响应: " + responseBody);
                    // 11. 尝试解析为X5Response格式
                    try {
                        X5Response x5Response = objectMapper.readValue(responseBody, X5Response.class);
                        System.out.println("13. X5响应解析成功: " + x5Response);
                        //System.out.println("13. X5响应解析成功: " + x5Response);
                        // 检查响应状态
                        if (x5Response.getHeader() != null && "200".equals(x5Response.getHeader().getCode())) {
                            System.out.println("14. X5协议调用成功");
                            //System.out.println("14. X5协议调用成功");
                        } else {
                            System.out.println("14. X5协议调用失败: " +
                                    (x5Response.getHeader() != null ? x5Response.getHeader().getDesc() : "未知错误"));
                            //System.out.println("14. X5协议调用失败: " +
                            //        (x5Response.getHeader() != null ? x5Response.getHeader().getDesc() : "未知错误"));
                        }
                    } catch (Exception e) {
                        System.out.println("13. 非X5格式响应,直接返回原始内容");
                        //System.out.println("13. 非X5格式响应,直接返回原始内容");
                    }
                    return responseBody;