| | |
| | | |
| | | import java.io.IOException; |
| | | import java.net.URLEncoder; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | @Service |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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"); |
| | | } |
| | | } |
| | | } |