文档

通过IDE使用阿里云Java SDK

更新时间:
一键部署

本文以在Windows操作系统上,通过IntelliJ IDEA使用阿里云SDK为例,帮助您了解如何快速使用阿里云Java SDK。

前提条件

使用 SDK

使用OpenAPI门户提供的代码示例工程

  1. 进入OpenAPI门户的API调试页面,选择产品和接口。例如我们以调用云服务器ECS的DescribeInstanceTypeFamilies接口为例,可在搜索栏中填入DescribeInstanceTypeFamilies,然后点击进入API调试页面。

    image

  2. 在页面中间的参数配置页签,并填写需要的参数信息。填写时请参考右侧的文档页签,充分了解接口的说明和注意事项(尤其是费用相关信息),以及各参数的具体含义和使用方法。如DescribeInstanceTypeFamilies接口支持传入两个参数,其中RegionId为必填,您可填入cn-hangzhou(表示杭州地域);Generation非必填,您可填入ecs-5(表示系列 V 实例规格族),参数详细取值可在右侧文档中查看。

    image

  3. 在右侧的SDK示例页面,选择语言,单击下载完整工程按钮,下载SDK完整工程至本地并解压。

    说明

    完整工程中包含了SDK信息以及当前OpenAPI的调用demo。

    image

  4. 打开IntelliJ IDEA,单击File->Open,选择解压后的工程文件夹,等待Maven自动安装依赖信息。

  5. 在调用之前,需要先获取访问凭证AccessKey,建议使用RAM用户的AccessKey。更多信息,请参见创建RAM用户的AccessKey

    重要

    获取RAM用户的AccessKey之后,还需要在环境变量中设置AccessKey,具体操作步骤请参见在Linux、macOS和Windows系统配置环境变量

  6. 运行示例代码。

    双击打开Sample,点击右上角运行按钮运行。

    image

  7. 查看运行结果。在底部控制台按下ctrl+f,搜索statusCode,如果看到"statusCode":200表示调用成功。

    image

在已有的项目中安装SDK

  1. 获取SDK

    访问SDK中心,选择您想要使用的SDK的云产品,这里以云服务器ECS为例。SDK版本选择 V2.0,语言选择 Java安装方式Apache Maven 为例。

    image

  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>

    image

  3. 右键项目名称,选择Maven->Reload project,下载Maven依赖。

    image

  4. 创建Java类。

    在项目src/main/java目录下,右键单击java,选择 New->Java Class,名称为Sample。

    image

  5. 初始化云产品客户端。

    重要
    1. 初始化客户端时需要使用AccessKey完成身份验证,请提前获取AccessKey。获取方法请参见创建AccessKey

    2. 获取RAM用户的AccessKey之后,还需要在环境变量中设置AccessKey,具体操作步骤请参见在Linux、macOS和Windows系统配置环境变量

    3. 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);
        }
    }
  6. 调用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);
        }
    }
    
  7. 处理异常,阿里云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。

    image

  • 运行时,提示“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。

    image

相关文档

进阶文档