import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.nio.charset.StandardCharsets; import java.sql.*; import java.time.Duration; /** Fix doubao endpoint + direct HTTP probe + login simulate. */ public class FixAndProbeLlm { private static final String JDBC = "jdbc:mysql://cq-cdb-8fjmemkb.sql.tencentcdb.com:27220/fs_tenant_cs1" + "?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8"; private static final String CHAT_EP = "https://ark.cn-beijing.volces.com/api/v3/chat/completions"; private static final String MSG = "\u4f60\u597d\uff0c\u60f3\u4e86\u89e3\u4e00\u4e0b\u5497\u4eec\u767d\u9152\u600e\u4e48\u5356\uff1f"; public static void main(String[] args) throws Exception { Class.forName("com.mysql.cj.jdbc.Driver"); String key = null; String modelId = null; String endpoint = null; try (Connection c = DriverManager.getConnection(JDBC, "root", "Ylrz_1q2w3e4r5t6y"); Statement st = c.createStatement()) { st.executeUpdate("UPDATE admin_ai_model SET api_endpoint='" + CHAT_EP + "', update_time=NOW() WHERE provider_code='doubao'"); ResultSet rs = st.executeQuery( "SELECT api_key, model_identifier, api_endpoint FROM admin_ai_model WHERE provider_code='doubao' AND status=1 LIMIT 1"); if (rs.next()) { key = rs.getString(1); modelId = rs.getString(2); endpoint = rs.getString(3); } } System.out.println("DB endpoint=" + endpoint + " model=" + modelId + " keyLen=" + (key == null ? 0 : key.length())); String body = "{\"model\":\"" + modelId + "\",\"max_tokens\":128,\"temperature\":0.7," + "\"messages\":[{\"role\":\"user\",\"content\":\"\u4f60\u597d\uff0c\u8bf7\u7528\u4e00\u53e5\u8bdd\u56de\u590dOK\"}]}"; HttpClient hc = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(15)).build(); HttpResponse resp = hc.send(HttpRequest.newBuilder() .uri(URI.create(endpoint)) .timeout(Duration.ofSeconds(60)) .header("Authorization", "Bearer " + key) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8)) .build(), HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8)); System.out.println("Direct HTTP status=" + resp.statusCode()); System.out.println(resp.body().length() > 500 ? resp.body().substring(0, 500) : resp.body()); // login + simulate String loginBody = "{\"tenantCode\":\"cs1\",\"username\":\"admin\",\"password\":\"Admin@123456\",\"code\":\"\",\"uuid\":\"\"}"; HttpResponse login = hc.send(HttpRequest.newBuilder() .uri(URI.create("http://127.0.0.1:8004/login")) .timeout(Duration.ofSeconds(30)) .header("Content-Type", "application/json; charset=utf-8") .POST(HttpRequest.BodyPublishers.ofString(loginBody, StandardCharsets.UTF_8)) .build(), HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8)); String token = extractToken(login.body()); System.out.println("Login status=" + login.statusCode() + " token=" + (token != null ? "OK" : "FAIL")); String simBody = "{\"templateId\":70,\"content\":\"" + MSG.replace("\\", "\\\\").replace("\"", "\\\"") + "\"}"; HttpResponse sim = hc.send(HttpRequest.newBuilder() .uri(URI.create("http://127.0.0.1:8004/workflow/simulate")) .timeout(Duration.ofSeconds(180)) .header("Authorization", "Bearer " + token) .header("Content-Type", "application/json; charset=utf-8") .POST(HttpRequest.BodyPublishers.ofString(simBody, StandardCharsets.UTF_8)) .build(), HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8)); System.out.println("\nSimulate HTTP " + sim.statusCode()); System.out.println(sim.body()); } private static String extractToken(String json) { int i = json.indexOf("\"token\""); if (i < 0) return null; int q1 = json.indexOf('"', json.indexOf(':', i) + 1); int q2 = json.indexOf('"', q1 + 1); return json.substring(q1 + 1, q2); } }