全部產品
Search
文件中心

:阿里雲 SDK

更新時間:Jun 30, 2024

本文為您介紹使用阿里雲 SDK 調用 OpenAPI

阿里雲 SDK

阿里雲為開發人員提供了多種程式設計語言(Java、C#、Go、Python、Node.js/TypeScript、PHP、C++ 等)的 SDK。開發人員只需要整合 SDK,通過 SDK 暴露的方法直接調用 OpenAPI 。SDK 統一封裝了簽名邏輯、逾時機制、重試機制,並根據文檔返回結構化 Response 對象,易於開發。

更多關於阿里雲SDK的介紹請參見阿里雲SDK

整合方法

  1. 訪問OpenAPI 門戶網站,點擊頂部image.png按鈕,搜尋雲產品。

  2. 點擊頂部 SDK 菜單,選擇您需要的整合的語言。

  3. 查看 SDK 安裝方式和整合程式碼範例,完成 SDK 整合。

V2 和 V1 版本比較

升級版 SDK(V2)較原版(V1)支援的語言更多,支援更複雜的 OpenAPI 使用情境,支援非同步呼叫和同步調用,解決了原版 SDK 的部分歷史遺留問題,使用起來更加靈活與強大。推薦使用升級版 SDK(V2),更多詳情請參見V2.0 SDK和V1.0 SDK

說明

新專案接入建議您使用升級版 SDK(V2),已使用原版 SDK(V1)整合的專案提案進行升級。

整合案例

我們以 Java 語言整合 SDK,調用 ECS的DescribeInstance情境為例,範例程式碼如下:

V2

升級版 SDK(V2)中包含了參數處理,請求組裝以及傳回值處理等 OpenAPI 請求的主要邏輯,開發人員可以通過安裝相關產品的 SDK 包依賴即可完成 OpenAPI 的請求,不再依賴核心庫 core。

依賴

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>ecs20140526</artifactId>
  <version>5.1.0</version>
</dependency>

範例程式碼

// This file is auto-generated, don't edit it. Thanks.
package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * 使用AK&SK初始化帳號Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.ecs20140526.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 必填,您的 AccessKey ID
                .setAccessKeyId(accessKeyId)
                // 必填,您的 AccessKey Secret
                .setAccessKeySecret(accessKeySecret);
        // 訪問的網域名稱
        config.endpoint = "ecs-cn-hangzhou.aliyuncs.com";
        return new com.aliyun.ecs20140526.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        // 請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        // 工程代碼泄露可能會導致 AccessKey 泄露,並威脅帳號下所有資源的安全性。以下程式碼範例使用環境變數擷取 AccessKey 的方式進行調用,僅供參考,建議使用更安全的 STS 方式,更多鑒權訪問方式請參見阿里雲Java SDK身分識別驗證配置章節
        com.aliyun.ecs20140526.Client client = Sample.createClient(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        com.aliyun.ecs20140526.models.RunInstancesRequest runInstancesRequest = new com.aliyun.ecs20140526.models.RunInstancesRequest();
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // 複製代碼運行請自行列印 API 的傳回值
            client.runInstancesWithOptions(runInstancesRequest, runtime);
        } catch (TeaException error) {
            // 如有需要,請列印 error
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 如有需要,請列印 error
            com.aliyun.teautil.Common.assertAsString(error.message);
        }        
    }
}

V1

依賴安裝

必須安裝 SDK 核心庫 Core,核心庫包括對 OpenAPI 的 HTTP 要求、認證資訊、簽名演算法、異常處理等主要邏輯等。

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.6.1</version>
</dependency>
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-ecs</artifactId>
  <version>5.11.5</version>
</dependency>

範例程式碼

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;

public class DescribeInstances {

    public static void main(String[] args) {
        // 建立DefaultAcsClient執行個體並初始化。
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        IAcsClient client = new DefaultAcsClient(profile);

        // 建立API請求並設定參數。
        DescribeInstancesRequest request = new DescribeInstancesRequest();
        request.setRegionId("cn-hangzhou");
        request.setInstanceNetworkType("vpc");
        request.setInstanceChargeType("PostPaid");
        request.setInternetChargeType("PayByTraffic");
        request.setPageSize(10);

        try {
            // 發起請求並處理應答或異常。
            DescribeInstancesResponse response = client.getAcsResponse(request);
            for (DescribeInstancesResponse.Instance instance : response.getInstances()) {
                System.out.println(instance.getImageId());
                System.out.println(instance.getInstanceId());
                System.out.println(instance.getPublicIpAddress());
            }
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }

    }
}