本文為您介紹使用阿里云 SDK 調用 OpenAPI 。
阿里云 SDK
阿里云為開發者提供了多種編程語言(Java、C#、Go、Python、Node.js/TypeScript、PHP、C++ 等)的 SDK。開發者只需要集成 SDK,通過 SDK 暴露的方法直接調用 OpenAPI 。SDK 統一封裝了簽名邏輯、超時機制、重試機制,并根據文檔返回結構化 Response 對象,易于開發。
更多關于阿里云SDK的介紹請參見阿里云SDK。
集成方法
訪問OpenAPI 門戶網站,點擊頂部按鈕,搜索云產品。
點擊頂部 SDK 菜單,選擇您需要的集成的語言。
查看 SDK 安裝方式和集成代碼示例,完成 SDK 集成。
V2 和 V1 版本比較
升級版 SDK(V2)較原版(V1)支持的語言更多,支持更復雜的 OpenAPI 使用場景,支持異步調用和同步調用,解決了原版 SDK 的部分歷史遺留問題,使用起來更加靈活與強大。推薦使用升級版 SDK(V2),更多詳情請參見V1.0 SDK和V2.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());
}
}
}
文檔內容是否對您有幫助?