啊鑫
2025-08-20 65f2eac5d58297a6e9725da47d37b38c6a8af60a
条码接口测试
已修改2个文件
120 ■■■■■ 文件已修改
src/main/java/com/gs/xiaomi/service/BCS101ApiService.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gs/xiaomi/service/BCS101ApiService.java
@@ -11,7 +11,6 @@
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeUnit;
@Service
@@ -63,7 +62,7 @@
        String base64Data = X5StringUtils.encodeBase64(jsonData);
        // URL编码
        String urlEncodedData = URLEncoder.encode(base64Data, String.valueOf(StandardCharsets.UTF_8));
        String urlEncodedData = URLEncoder.encode(base64Data, "UTF-8");
        // 构建form表单数据 - 按照注释要求:data=url编码(base64编码)的数据
        String formData = "data=" + urlEncodedData;
@@ -112,7 +111,7 @@
        String base64Data = X5StringUtils.encodeBase64(jsonData);
        // URL编码
        String urlEncodedData = URLEncoder.encode(base64Data, String.valueOf(StandardCharsets.UTF_8));
        String urlEncodedData = URLEncoder.encode(base64Data, "UTF-8");
        // 构建form表单数据
        String formData = "data=" + urlEncodedData;
@@ -179,4 +178,97 @@
            return DigestUtil.md5Hex(signString).toUpperCase();
        }
    }
    /**
     * 调试版本 - 详细输出请求信息来定位问题
     */
    public String getBCS101DataDebug(BCS101Request request) throws IOException {
        System.out.println("=== BCS101 API 调试信息 ===");
        // 直接将请求对象转换为JSON字符串
        String jsonData = objectMapper.writeValueAsString(request);
        System.out.println("1. 原始JSON数据: " + jsonData);
        // Base64编码
        String base64Data = X5StringUtils.encodeBase64(jsonData);
        System.out.println("2. Base64编码后: " + base64Data);
        // URL编码
        String urlEncodedData = URLEncoder.encode(base64Data, "UTF-8");
        System.out.println("3. URL编码后: " + urlEncodedData);
        // 构建form表单数据
        String formData = "data=" + urlEncodedData;
        System.out.println("4. Form数据: " + formData);
        // 构建Basic Auth
        String credentials = DataAcquisitionConfiguration.BCS_USER_NAME + ":" + DataAcquisitionConfiguration.BCS_PWD;
        String auth = X5StringUtils.encodeBase64(credentials);
        System.out.println("5. Auth编码: Basic " + auth);
        System.out.println("6. 请求URL: " + DataAcquisitionConfiguration.BCS_101_URL);
        // 尝试不同的Content-Type
        RequestBody body = RequestBody.create(formData, MediaType.parse("application/x-www-form-urlencoded; charset=utf-8"));
        Request httpRequest = new Request.Builder()
                .url(DataAcquisitionConfiguration.BCS_101_URL)
                .method("POST", body)
                .addHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")
                .addHeader("Authorization", "Basic " + auth)
                .addHeader("Accept", "application/xml, text/xml, */*")
                .addHeader("User-Agent", "BCS101-Client/1.0")
                .addHeader("Connection", "close")
                .build();
        System.out.println("7. 发送请求...");
        // 执行请求
        try (Response response = client.newCall(httpRequest).execute()) {
            System.out.println("8. 响应状态码: " + response.code());
            System.out.println("9. 响应头: " + response.headers().toString());
            if (response.body() != null) {
                String responseBody = response.body().string();
                System.out.println("10. 响应内容: " + responseBody);
                return responseBody;
            }
            throw new IOException("Empty response body");
        }
    }
    /**
     * 简化版本 - 尝试直接发送JSON数据
     */
    public String getBCS101DataSimple(BCS101Request request) throws IOException {
        System.out.println("=== BCS101 API 简化版本测试 ===");
        // 直接将请求对象转换为JSON字符串
        String jsonData = objectMapper.writeValueAsString(request);
        System.out.println("发送的JSON数据: " + jsonData);
        // 构建Basic Auth
        String credentials = DataAcquisitionConfiguration.BCS_USER_NAME + ":" + DataAcquisitionConfiguration.BCS_PWD;
        String auth = X5StringUtils.encodeBase64(credentials);
        // 尝试直接发送JSON数据(不经过Base64和URL编码)
        RequestBody body = RequestBody.create(jsonData, MediaType.parse("application/json; charset=utf-8"));
        Request httpRequest = new Request.Builder()
                .url(DataAcquisitionConfiguration.BCS_101_URL)
                .method("POST", body)
                .addHeader("Content-Type", "application/json; charset=utf-8")
                .addHeader("Authorization", "Basic " + auth)
                .build();
        // 执行请求
        try (Response response = client.newCall(httpRequest).execute()) {
            System.out.println("简化版本响应状态: " + response.code());
            if (response.body() != null) {
                String responseBody = response.body().string();
                System.out.println("简化版本响应内容: " + responseBody);
                return responseBody;
            }
            throw new IOException("Empty response body");
        }
    }
}
src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java
@@ -42,6 +42,7 @@
        request.setPageNo(1);
        request.setPageSize(1000);
        //Error: ERROR_IN_MODULECHAIN;ERROR_IN_MODULECHAIN, Sender Channel 'CC_MI_OEM_HTTP_OUT' (ID: a58369adbaa03aafb76d2c02c2ae7cd7): Catching exception calling messaging system
        System.out.println("=== 测试BCS101 API服务(Basic Auth版本) ===");
        try {
            // 调用标准BCS101 API服务(只使用Basic Auth)
@@ -52,6 +53,7 @@
            e.printStackTrace();
        }
        //Error: ERROR_IN_MODULECHAIN;ERROR_IN_MODULECHAIN, Sender Channel 'CC_MI_OEM_HTTP_OUT' (ID: a58369adbaa03aafb76d2c02c2ae7cd7): Catching exception calling messaging system
        System.out.println("\n=== 测试BCS101 API服务(带X5协议版本) ===");
        try {
            // 调用带X5协议的BCS101 API服务
@@ -61,5 +63,25 @@
            System.out.println("BCS101 API X5调用异常: " + e.getMessage());
            e.printStackTrace();
        }
        System.out.println("\n=== 测试BCS101 API服务(调试版本) ===");
        try {
            // 调用调试版本API服务
            String debugResponse = bcs101ApiService.getBCS101DataDebug(request);
            System.out.println("BCS101 API Debug Response: " + debugResponse);
        } catch (Exception e) {
            System.out.println("BCS101 API 调试版本调用异常: " + e.getMessage());
            e.printStackTrace();
        }
        System.out.println("\n=== 测试BCS101 API服务(简化版本) ===");
        try {
            // 调用简化版本API服务
            String simpleResponse = bcs101ApiService.getBCS101DataSimple(request);
            System.out.println("BCS101 API Simple Response: " + simpleResponse);
        } catch (Exception e) {
            System.out.println("BCS101 API 简化版本调用异常: " + e.getMessage());
            e.printStackTrace();
        }
    }
}