本文以在Windows作業系統上,通過IntelliJ IDEA使用阿里雲SDK為例,協助您瞭解如何快速使用阿里雲Java SDK。
前提條件
-
已安裝了JDK,如果還未安裝,請參見在Windows安裝JDK。
-
已安裝了IntelliJ IDEA,如果還未安裝,請參見在Windows搭建Java開發環境。
使用 SDK
使用OpenAPI門戶提供的程式碼範例工程
-
進入OpenAPI門戶的API調試頁面,選擇產品和介面。例如我們以調用Elastic Compute Service的DescribeInstanceTypeFamilies介面為例,可在搜尋欄中填入DescribeInstanceTypeFamilies,然後點擊進入API調試頁面。
-
在頁面中間的參數配置頁簽,並填寫需要的參數資訊。填寫時請參考右側的文檔頁簽,充分瞭解介面的說明和注意事項(尤其是費用相關資訊),以及各參數的具體含義和使用方法。如DescribeInstanceTypeFamilies介面支援傳入兩個參數,其中RegionId為必填,您可填入cn-hangzhou(表示杭州地區);Generation非必填,您可填入ecs-5(表示系列 V 執行個體規格類型系列),參數詳細取值可在右側文檔中查看。
-
在右側的SDK樣本頁面,選擇語言,單擊下載完整工程按鈕,下載SDK完整工程至本地並解壓。
說明完整工程中包含了SDK資訊以及當前OpenAPI的調用demo。
-
開啟IntelliJ IDEA,單擊File->Open,選擇解壓後的工程檔案夾,等待Maven自動安裝依賴資訊。
-
在調用之前,需要先擷取訪問憑證AccessKey,建議使用RAM使用者的AccessKey。更多資訊,請參見建立RAM使用者的AccessKey。
重要擷取RAM使用者的AccessKey之後,還需要在環境變數中設定AccessKey,具體操作步驟請參見在Linux、macOS和Windows系統配置環境變數
-
運行範例程式碼。
雙擊開啟Sample,點擊右上方運行按鈕運行。
// This file is auto-generated, don't edit it. Thanks. package com.aliyun.sample; import com.aliyun.tea.*; public class Sample { /** * 使用AK&SK初始化帳號Client * @return Client * @throws Exception */ public static com.aliyun.ecs20140526.Client createClient() throws Exception { // 工程代碼泄露可能會導致 AccessKey 泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考。 // 建議使用更安全的 STS 方式,更多鑒權訪問方式請參見:https://www.alibabacloud.com/help/document_detail/378657.html。 com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。 .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); // Endpoint 請參考 https://api.aliyun.com/product/Ecs config.endpoint = "ecs.cn-beijing.aliyuncs.com"; return new com.aliyun.ecs20140526.Client(config); } } -
查看運行結果。在底部控制台按下
ctrl+f,搜尋statusCode,如果看到"statusCode":200表示調用成功。
在已有的專案中安裝SDK
-
擷取SDK
訪問SDK中心,選擇您想要使用的SDK的雲產品,這裡以Elastic Compute Service為例。SDK版本選擇 V2.0,語言選擇 Java,安裝方式以Apache Maven 為例。
環境要求最低 Java 8。在專案 pom.xml 中添加依賴配置:
groupId為com.aliyun,artifactId為ecs20140526,version為5.1.2。 -
引入SDK
開啟IntelliJ IDEA中已建立的Maven專案,在pom.xml中建立 <dependencies></dependencies>標籤,在該標籤中複製步驟1中的Apache Maven依賴。
<dependencies> <!--ECS V2.0 SDK --> <dependency> <groupId>com.aliyun</groupId> <artifactId>ecs20140526</artifactId> <version>5.1.2</version> </dependency> </dependencies> -
右鍵專案名稱,選擇Maven->Reload project,下載Maven依賴。
-
建立Java類。
在專案src/main/java目錄下,按右鍵java,選擇 New->Java Class,名稱為Sample。
-
初始化雲產品用戶端。
重要-
初始化用戶端時需要使用AccessKey完成身分識別驗證,請提前擷取AccessKey。擷取方法請參見建立AccessKey。
-
擷取RAM使用者的AccessKey之後,還需要在環境變數中設定AccessKey,具體操作步驟請參見在Linux、macOS和Windows系統配置環境變數。
-
endpoint如何設定請參見服務存取點。
import com.aliyun.ecs20140526.Client; import com.aliyun.teaopenapi.models.Config; public class Sample { public static void main(String[] args) throws Exception { Config config = new Config() .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); config.endpoint = "ecs-cn-hangzhou.aliyuncs.com"; Client client = new Client(config); } } -
-
調用OpenAPI
在調用OpenAPI之前,您需要先瞭解OpenAPI的詳細資料,請查看API文檔。
同時在引入的雲產品Maven依賴包中,雲產品SDK提供了每一個OpenAPI的請求類和響應類,請求類中定義了參數及參數類型,響應類中定義了返回參數結構,避免您在調用OpenAPI時參數名拼字錯誤。
比如調用describeInstanceTypeFamilies,它的請求類是DescribeInstanceTypeFamiliesRequest,響應類是DescribeInstanceTypeFamiliesResponse。
說明OpenAPI請求類的命名規則:OpenAPI名稱+Request
OpenAPI響應類的命名規則:OpenAPI名稱+Response
import com.aliyun.ecs20140526.Client; import com.aliyun.ecs20140526.models.DescribeInstanceTypeFamiliesRequest; import com.aliyun.ecs20140526.models.DescribeInstanceTypeFamiliesResponse; import com.aliyun.teaopenapi.models.Config; public class Sample { public static void main(String[] args) throws Exception { Config config = new Config() .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); config.endpoint = "ecs-cn-hangzhou.aliyuncs.com"; Client client = new Client(config); DescribeInstanceTypeFamiliesRequest describeInstanceTypeFamiliesRequest = new DescribeInstanceTypeFamiliesRequest(); describeInstanceTypeFamiliesRequest.setRegionId("cn-hangzhou"); DescribeInstanceTypeFamiliesResponse describeInstanceTypeFamiliesResponse = client.describeInstanceTypeFamilies(describeInstanceTypeFamiliesRequest); } } -
處理異常,阿里雲SDK對異常做了統一處理。
TeaException: 在 SDK 的請求中主要以業務報錯為主的異常,該異常的樣本中提供了三個參數為使用者排查問題提供協助:
-
code: OpenAPI 業務報錯的錯誤碼。
-
message:OpenAPI 業務報錯的錯誤資訊,其中會包含本次請求的 RequestId。
-
data:OpenAPI 報錯後服務端返回的詳細資料
import com.aliyun.ecs20140526.Client; import com.aliyun.ecs20140526.models.DescribeInstanceTypeFamiliesRequest; import com.aliyun.ecs20140526.models.DescribeInstanceTypeFamiliesResponse; import com.aliyun.tea.TeaException; import com.aliyun.teaopenapi.models.Config; public class Sample { public static void main(String[] args) { try { Config config = new Config() .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); config.endpoint = "ecs-cn-hangzhou.aliyuncs.com"; Client client = new Client(config); DescribeInstanceTypeFamiliesRequest describeInstanceTypeFamiliesRequest = new DescribeInstanceTypeFamiliesRequest(); describeInstanceTypeFamiliesRequest.setRegionId("cn-hangzhou"); DescribeInstanceTypeFamiliesResponse describeInstanceTypeFamiliesResponse = client.describeInstanceTypeFamilies(describeInstanceTypeFamiliesRequest); } catch (TeaException teaException) { // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。 // 列印錯誤碼 System.out.println(teaException.getCode()); // 列印錯誤資訊,錯誤資訊中包含 RequestId System.out.println(teaException.getMessage()); // 列印服務端返回的具體錯誤內容 System.out.println(teaException.getData()); } catch (Exception e) { TeaException error = new TeaException(e.getMessage(), e); // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。 // 錯誤 message System.out.println(error.getMessage()); // 診斷地址 System.out.println(error.getData().get("Recommend")); com.aliyun.teautil.Common.assertAsString(error.message); } } } -
常見問題
-
運行時,提示“java: 錯誤: 不支援發行版本 X”。
同步選取
Ctrl+Alt+Shift+S,進入Project Structure視窗。選擇Modules,在右側Language Level中選擇跟您所使用JDK版本一致的版本,例如您所使用的JDK 8,Language Level選擇“8 - Lambdas, type annotations etc. ”。單擊Apply,單擊OK。 -
運行時,提示“java: Compilation failed: internal java compiler error”。
在IntelliJ IDEA功能表列,單擊File->Setting->Build, Execution, Deployment->Compiler->Java Compiler,Project bytecode version和Target bytecode version選擇跟您所使用JDK版本一致的版本,例如您所使用的JDK 8,這兩項選擇 8 即可。單擊Apply,單擊OK。