Java SDK调用示例

本文以调用添加访问控制地址簿API为例,为您介绍SDK的安装方式和使用。

前提条件

  1. 由于阿里云账号(主账号)拥有资源的所有权限,其AccessKey一旦泄露风险巨大,所以建议您使用RAM用户的AccessKey。获取方法请参见创建AccessKey

  2. 给RAM用户授予操作域名资源的权限。本示例选择AliyunYundunCloudFirewallFullAccess系统策略。

    1. 使用系统策略。

      • AliyunYundunCloudFirewallFullAccess:管理云盾云防火墙(CloudFirewall)的权限

      • AliyunYundunCloudFirewallReadOnlyAccess:只读访问云盾云防火墙(CloudFirewall)的权限。

    2. 使用自定义权限。

      关于如何创建自定义权限,请参见创建自定义权限策略授权信息

  3. 在环境变量中配置AccessKey,具体操作步骤请参见在Linux、macOS和Windows系统配置环境变量

安装SDK

  1. 在Maven的配置文件中添加Maven仓库。

    <repositories>
         <repository>
             <id>sonatype-nexus-staging</id>
             <name>Sonatype Nexus Staging</name>
             <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
             <releases>
                 <enabled>true</enabled>
             </releases>
             <snapshots>
                 <enabled>true</enabled>
             </snapshots>
         </repository>
    </repositories>
  2. 打开Maven项目的pom.xml文件,在<dependencies>节点中加入依赖配置,并刷新Maven配置。

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>domain20180129</artifactId>
      <version>3.16.0</version>
    </dependency>

使用SDK

1. 初始化客户端

阿里云SDK支持多种访问凭据用于初始化客户端,例如AccessKey和STS Token等,更多方式请参见管理访问凭据。本示例以通过AccessKey初始化客户端为例。

package com.aliyun.sample;

public class Sample {
    public static com.aliyun.cloudfw20171207.Client createClient() throws Exception {
        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/Cloudfw
        config.endpoint = "cloudfw.aliyuncs.com";
        return new com.aliyun.cloudfw20171207.Client(config);
    }
}

2. 构建接口的请求对象

在构建请求对象之前,请在API概览中找到将要调用的接口,查看该接口的参数信息。

说明

请求对象命名规则:{API名称}Request,例如AddAddressBook该接口的请求对象为AddAddressBookRequest

com.aliyun.cloudfw20171207.models.AddAddressBookRequest addAddressBookRequest = new com.aliyun.cloudfw20171207.models.AddAddressBookRequest()
                .setLang("your_value")
                .setAddressList("your_value")
                .setDescription("your_value");

3. 发起调用

说明

接口返回对象命名规则:{API名称}Response,例如AddAddressBook该接口的返回对象为AddAddressBookResponse

// 设置运行时参数
 com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
 com.aliyun.cloudfw20171207.models.AddAddressBookResponse resp = client.addAddressBookWithOptions(addAddressBookRequest, runtime););

4. 异常处理

Java SDK将异常分为TeaUnretryableException和TeaException。

  • TeaUnretryableException:主要是因为网络问题造成,一般是网络问题达到最大重试次数后抛出。

  • TeaException:主要以业务报错为主的异常。

    重要

    示例中仅做打印展示。请重视异常处理,切勿在项目中直接忽略异常。建议采取合理的措施来处理异常,比如合理地传播异常、记录日志、尝试恢复等,以确保系统的健壮性和稳定性。

try {
	com.aliyun.cloudfw20171207.Client client = Sample.createClient();
	com.aliyun.cloudfw20171207.models.AddAddressBookRequest addAddressBookRequest = new com.aliyun.cloudfw20171207.models.AddAddressBookRequest()
		.setLang("your_value")
		.setAddressList("your_value")
		.setDescription("your_value");
	// 设置运行时参数
	com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
	com.aliyun.cloudfw20171207.models.AddAddressBookResponse resp = client.addAddressBookWithOptions(addAddressBookRequest, runtime);
} catch (TeaException error) {
	// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
	// 错误 message
	System.out.println(error.getMessage());
	// 诊断地址
	System.out.println(error.getData().get("Recommend"));
	com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
	TeaException error = new TeaException(_error.getMessage(), _error);
	// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
	// 错误 message
	System.out.println(error.getMessage());
	// 诊断地址
	System.out.println(error.getData().get("Recommend"));
	com.aliyun.teautil.Common.assertAsString(error.message);
}

5. 完整示例

package com.aliyun.sample;
import com.aliyun.tea.*;

public class Sample {
    public static com.aliyun.cloudfw20171207.Client createClient() throws Exception {
        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/Cloudfw
        config.endpoint = "cloudfw.aliyuncs.com";
        return new com.aliyun.cloudfw20171207.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        try {
            com.aliyun.cloudfw20171207.Client client = Sample.createClient();
            com.aliyun.cloudfw20171207.models.AddAddressBookRequest addAddressBookRequest = new com.aliyun.cloudfw20171207.models.AddAddressBookRequest().setLang("your_value").setAddressList("your_value").setDescription("your_value");
            com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
            com.aliyun.cloudfw20171207.models.AddAddressBookResponse resp = client.addAddressBookWithOptions(addAddressBookRequest, runtime);
            com.aliyun.teaconsole.Client.log(com.aliyun.teautil.Common.toJSONString(resp));
        } catch (TeaException error) {
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }
    }
}