Java SDK调用示例
本文以调用添加访问控制地址簿API为例,为您介绍SDK的安装方式和使用。
前提条件
由于阿里云账号(主账号)拥有资源的所有权限,其AccessKey一旦泄露风险巨大,所以建议您使用RAM用户的AccessKey。获取方法请参见创建AccessKey。
给RAM用户授予操作域名资源的权限。本示例选择
AliyunYundunCloudFirewallFullAccess
系统策略。在环境变量中配置AccessKey,具体操作步骤请参见在Linux、macOS和Windows系统配置环境变量。
安装SDK
在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>
打开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);
}
}
}