更新时间:2026-11-10 GMT+08:00

Java SDK调用示例

本文以调用Kafka的查询所有实例列表(ListInstances)接口为例,介绍华为云Java SDK的使用方法。

前提条件

  • 已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK),具体操作请参见新增访问密钥。
  • 运行SDK的环境已安装JDK 1.8及以上版本,并已安装和配置Maven环境。

安装SDK

推荐通过Maven安装华为云Java SDK,此处以Maven安装方式为例进行介绍。

打开Maven项目的pom.xml文件,在<dependencies>节点下加入以下依赖配置,Maven会自动下载相关SDK包。

以3.1.219版本的Java SDK为例,最新的SDK版本信息可通过SDK中心查看获取。

  • 安装单个云服务SDK包
    <dependency> 
         <groupId>com.huaweicloud.sdk</groupId> 
         <artifactId>huaweicloud-sdk-kafka</artifactId>
         <version>3.1.219</version> 
     </dependency>
  • 安装云服务集合SDK包
    <dependency> 
         <groupId>com.huaweicloud.sdk</groupId> 
         <artifactId>huaweicloud-sdk-all</artifactId> 
         <version>3.1.219</version> 
     </dependency>
  • 安装云服务集合SDK Bundle包

    当出现第三方库冲突时,可以引入如下Bundle包(3.0.40-rc及以上版本),该包包含所有支持的服务和重定向了SDK依赖的第三方软件,避免和业务自身依赖的库产生冲突。

    <dependency> 
         <groupId>com.huaweicloud.sdk</groupId> 
         <artifactId>huaweicloud-sdk-bundle</artifactId> 
         <version>3.1.219</version> 
     </dependency>

Bundle包已经包含了SDK的Core包和云服务集合包,不需要再单独引入Core包和服务包。根据Maven依赖解析顺序,额外引入Core包和服务包可能会导致Bundle包不生效。

使用SDK

以下是一个完整的Java示例,演示如何使用华为云Java SDK调用查询所有实例列表(ListInstances)接口。

  • 如果需要获取其他接口的SDK示例,请参见获取SDK示例代码。
  • 本示例中仅提供了基本的接口参数配置说明,更多的进阶配置请参见SDK的用户手册。
  • 如果把认证用的AK/SK直接写到代码中会有较大的安全风险,建议在配置文件或环境变量中以密文存放AK/SK,使用时解密,确保安全。本示例中把AK和SK保存为环境变量CLOUD_SDK_AK和CLOUD_SDK_SK,具体操作请参见环境变量。
    package com.huaweicloud.sdk.test;
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.kafka.v2.region.KafkaRegion;
    import com.huaweicloud.sdk.kafka.v2.*;
    import com.huaweicloud.sdk.kafka.v2.model.*;
    public class ListInstancesSolution {
        public static void main(String[] args) {
            // ==================== 初始化客户端 ==================== 
            // 从环境变量获取AK/SK,运行前需要提前把AK/SK设置为环境变量
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
            String projectId = "195e********4a708ad9f9********1d";
    
            // 配置认证凭证
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    .withAk(ak)
                    .withSk(sk);
    
            // 初始化客户端
            KafkaClient client = KafkaClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(KafkaRegion.valueOf("ap-southeast-1"))
                    .build();
    
            // ==================== 构造请求对象 ==================== 
            // 使用SDK中提供的Request对象封装请求参数
            ListInstancesRequest request = new ListInstancesRequest();
            request.withEngine(ListInstancesRequest.EngineEnum.fromValue("kafka"));
    
            // ==================== 发起请求并处理响应 ==================== 
            // 通过客户端调用对应API发起请求,调用成功将返回Response对象,调用失败将抛出对应异常
            try {
                ListInstancesResponse response = client.listInstances(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }