> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aibase.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Java 调用

> 使用 JDK HttpClient 调用 AIBase 开放平台统一任务接口。

以下示例使用 JDK `HttpClient` 调用当前已上线的 AI 对话问题挖掘服务。请从环境变量或密钥管理服务读取 API Key。

```java theme={null}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

public class AIBaseExample {
    public static void main(String[] args) throws Exception {
        String apiKey = System.getenv("AIBASE_API_KEY");
        String requestId = "req-20260908-000001";
        String requestBody = """
            {
              "apiCode": "geo.questions_corr_recommend",
              "data": {
                "keyword": "多智能体系统"
              }
            }
            """;

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.aibase.cn/v1/openapi/tasks"))
            .timeout(Duration.ofSeconds(30))
            .header("AIBase-API-Key", apiKey)
            .header("AIBase-Request-Id", requestId)
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();

        HttpResponse<String> response = HttpClient.newHttpClient()
            .send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println("HTTP " + response.statusCode());
        System.out.println(response.body());
    }
}
```

## 响应处理

1. 先检查 `response.statusCode()`。
2. 再解析响应体中的业务 `code`。
3. 从 `data.result` 读取问题列表。
4. 保存 `data.requestId`，用于日志关联和异常排查。

<Warning>
  不要把真实 API Key 写进 Java 源码、配置样例或代码仓库。生产环境还应处理网络异常、线程中断、空响应和字段为空的情况。
</Warning>

<Columns cols={2}>
  <Card title="查看返回对象" icon="braces" href="/api-reference/question-discovery#类型定义">
    参考 Java 与 TypeScript 类型定义。
  </Card>

  <Card title="处理调用限制" icon="timer-reset" href="/platform/rate-limits">
    添加超时、有限重试和并发控制。
  </Card>
</Columns>
