全部產品
Search
文件中心

Alibaba Cloud SDK:整合SDK

更新時間:May 15, 2025

在調用OpenAPI時,建議採用在專案中整合SDK的方式。使用SDK可以簡化開發流程,實現功能的快速整合,同時有效降低維護成本。本文將詳細介紹如何在專案中安裝SDK以及使用SDK開發。

環境要求

JDK版本 >= 1.6。

安裝SDK

在使用Java V1.0 SDK時,需要同時安裝雲產品SDK和核心SDK。

雲產品SDK

雲產品SDK主要包含了調用OpenAPI所需的請求參數Request對象及返回結果Response對象。以雲產品ECS的SDK為例,建議通過Maven依賴的方式進行引入,以下為其Maven依賴資訊:

<dependencies>
  <!--  ecs V1.0 SDK  -->
  <dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-ecs</artifactId>
    <version>5.11.7</version>
  </dependency>
</dependencies>

V1.0 SDK的命名方式為aliyun-java-sdk-${產品code}。您也可以通過SDK資訊中心來查看具體產品的V1.0 SDK的資訊。

核心SDK

核心SDK主要包含在調用OpenAPI時所需的Client對象、簽名邏輯以及異常處理等功能。建議通過Maven依賴的方式,依賴資訊如下:

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.7.3</version>
</dependency>

版本資訊請參見Maven Repository: com.aliyun » aliyun-java-sdk-core

使用SDK

本文將以調用ECSDescribeInstances介面為例,為您分步介紹如何使用V1.0 SDK。

1. 初始化請求用戶端

所有的OpenAPI均通過核心SDK提供的Client發起調用,因此在調用OpenAPI之前,需要先進行用戶端初始化。這裡以使用AK初始化方式為例,更多用戶端初始化方式請參見管理訪問憑據

說明

樣本採用讀取環境變數的方式擷取憑證,運行代碼前需配置環境變數ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET。具體操作,請參見在Linux、macOS和Windows系統配置環境變數

com.aliyuncs.profile.DefaultProfile profile = com.aliyuncs.profile.DefaultProfile.getProfile(
        "<REGION_ID>",
        // 從環境變數擷取RAM使用者的AccessKey ID
        System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
        // 從環境變數擷取RAM使用者的AccessKey Secret
        System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
com.aliyuncs.IAcsClient client = new com.aliyuncs.DefaultAcsClient(profile);
說明

單Client的模式存線上程不安全的問題,而且通過一個profile資訊在不同產品之間混用,容易造成的許可權管理問題,建議您使用V2.0 SDK開發。

2. 構造OpenAPI請求參數對象

可以使用雲產品SDK中提供的Request對象封裝請求參數。

說明

OpenAPI請求參數對象的命名方式為:<OpenAPI名稱>Request

com.aliyuncs.ecs.model.v20140526.DescribeInstancesRequest request = new com.aliyuncs.ecs.model.v20140526.DescribeInstancesRequest();
request.setRegionId("cn-hangzhou");
request.setInstanceIds(new com.google.gson.Gson().toJson(Arrays.asList("i-bp1fq61ktxxxxxxxxxxxx","i-bp1fq62ktxxxxxxxxxxxx")));

3. 發起請求

通過步驟1建立的請求用戶端調用getAcsResponse介面發起請求,該介面的參數為步驟2構造的Request對象。調用成功後,將返回Response對象。

說明

OpenAPI返回參數對象的命名方式為:<OpenAPI名稱>Response

com.aliyuncs.ecs.model.v20140526.DescribeInstancesResponse response = client.getAcsResponse(request);
System.out.println(new com.google.gson.Gson().toJson(response));

4. 異常處理

在調用OpenAPI時如果發生異常,您可以通過捕獲ServerException和ClientException來擷取錯誤資訊。其中ClientException異常一般是在初始化用戶端過程中參數填錯,例如AK輸入錯誤;ServerException異常產生的原因有很多種,您可以根據異常中返回的RequestId聯絡阿里雲協助排查問題。

完整程式碼範例

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.ecs.model.v20140526.DescribeInstancesRequest;
import com.aliyuncs.ecs.model.v20140526.DescribeInstancesResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;

import java.util.Arrays;

public class Sample {
    public static void main(String[] args) {
        try {
            DefaultProfile profile = DefaultProfile.getProfile(
                    "<REGION_ID>",
                    // 從環境變數擷取RAM使用者的AccessKey ID
                    System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                    // 從環境變數擷取RAM使用者的AccessKey Secret
                    System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            IAcsClient client = new DefaultAcsClient(profile);
            DescribeInstancesRequest request = new DescribeInstancesRequest();
            request.setRegionId("cn-hangzhou");
            request.setInstanceIds(new Gson().toJson(Arrays.asList("i-bp1fq61ktxxxxxxxxxxxx", "i-bp1fq62ktxxxxxxxxxxxx")));
            DescribeInstancesResponse response = client.getAcsResponse(request);
            System.out.println(new Gson().toJson(response));
        } catch (ServerException e) {
            // 樣本僅做列印展示。請重視異常處理,在工程專案中切勿直接忽略異常。
            System.out.println("ServerException:" + e.getErrMsg());
        } catch (ClientException e) {
            // 樣本僅做列印展示。請重視異常處理,在工程專案中切勿直接忽略異常。
            System.out.println("ClientException:" + e.getErrMsg());
        }
    }
}

相關文檔