当前位置:首页>python>Java 调用 Python AI 服务(HTTP 方式)

Java 调用 Python AI 服务(HTTP 方式)

  • 2026-10-11 07:17:15
Java 调用 Python AI 服务(HTTP 方式)

核心思路

Python 用 Flask 提供 AI 模型 REST API
Java 通过 HTTP 请求 调用接口 → 解析 JSON → 得到 AI 预测结果


Java 调用 Flask AI 接口

通过 Flask REST API 调用

Python 端提供预测接口:

@app.route("/ai/predict", methods=["POST"])
defpredict():
    data = request.json
    result = model.predict([data["features"]])
return jsonify({"code":0, "prediction": int(result)})

Java 发送 HTTP 请求

HttpURLConnection(JDK 原生)

URLurl=newURL("http://localhost:5000/ai/predict");
HttpURLConnectionconn= (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");

// 发送 JSON
Stringjson="{\"features\":[1,2,3]}";
try(OutputStreamos= conn.getOutputStream()) {
    os.write(json.getBytes());
}

// 获取响应
try(BufferedReaderbr=newBufferedReader(newInputStreamReader(conn.getInputStream()))) {
Stringres= br.readLine();
}

HttpClient(JDK 11+ 原生)

HttpClientclient= HttpClient.newHttpClient();
HttpRequestrequest= HttpRequest.newBuilder()
    .uri(URI.create("http://localhost:5000/ai/predict"))
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString("{\"features\":[1,2,3]}"))
    .build();

HttpResponse<String> res = client.send(request, HttpResponse.BodyHandlers.ofString());

JSON 解析

把接口返回的 JSON 转为 Java 对象

Gson

Gsongson=newGson();
AiResponseresp= gson.fromJson(json, AiResponse.class);

Jackson

ObjectMappermapper=newObjectMapper();
AiResponseresp= mapper.readValue(json, AiResponse.class);

Fastjson

AiResponseresp= JSON.parseObject(json, AiResponse.class);

异步调用

使用 CompletableFuture 异步调用,不阻塞主线程

CompletableFuture.supplyAsync(() -> {
return httpClient.send(request, HttpResponse.BodyHandlers.ofString());
}).thenApply(response -> {
return gson.fromJson(response.body(), AiResponse.class);
}).thenAccept(result -> {
    System.out.println(result.getPrediction());
});

连接池配置

OkHttp

OkHttpClientclient=newOkHttpClient.Builder()
    .connectionPool(newConnectionPool(10, 5, TimeUnit.MINUTES))
    .connectTimeout(5, TimeUnit.SECONDS)
    .build();

Apache HttpClient

PoolingHttpClientConnectionManagerpool=newPoolingHttpClientConnectionManager();
pool.setMaxTotal(100);
pool.setDefaultMaxPerRoute(20);

重试与熔断(Resilience4j)

重试

Retryretry= Retry.of("ai-api", RetryConfig.custom()
    .maxAttempts(3)
    .waitDuration(Duration.ofSeconds(1))
    .build());

CompletableFuture<String> future = Retry.decorateFuture(retry, this::callAiApi);

熔断

CircuitBreakerbreaker= CircuitBreaker.of("ai", CircuitBreakercConfig.custom()
    .failureRateThreshold(50)
    .waitDurationInOpenState(Duration.ofSeconds(10))
    .build());

极简速记

  • • Python Flask 提供 AI 接口,返回 JSON
  • • Java 用 HttpClient / OkHttp 发送 POST 请求
  • • Gson / Jackson 解析 JSON
  • • CompletableFuture 实现异步
  • • 连接池提升性能
  • • Resilience4j 实现重试、熔断、高可用

最新文章

随机文章