文档

SDK 客户端的初始化和请求方式

更新时间:

本节主要是介绍客户端的 Client 初始化方式以及如何发起 OpenAPI 请求。

SDK 客户端初始化

原版 SDK 因为是所有产品的 SDK 共用一个 SDK Core,所以通过这个共用 SDK Core 中的方法初始化生成一个 client 对象来处理所有产品的请求。

说明

示例采用读取环境变量的方式创建凭证,运行代码前需配置以下两个环境变量。了解更多请参见Credentials 设置

export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id>

export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>

依赖信息

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-core</artifactId>
      <version>4.6.3</version>
    </dependency>

代码示例

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.profile.DefaultProfile;
public class Sample {

    public static void main(String[] args) {
        // 地域Id,用于自动寻址,更多请参见 Endpoint 配置章节
        String regionId = "cn-shanghai";
        // 通过读取环境变量
        EnvironmentVariableCredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();
        DefaultProfile profile = DefaultProfile.getProfile(regionId);
        // 通过 SDK Core 保存用户的 profile 信息并初始化 client
        DefaultAcsClient client = new DefaultAcsClient(profile, credentialsProvider);
    }
}

说明

单 Client 的模式存在线程不安全的问题,而且通过一个 profile 信息在不同产品之间混用造成的权限管理问题

OpenAPI 请求方式

原版 SDK 通过 SDK Core 进行 OpenAPI 的请求,开发者通过云产品 SDK 的 Request 和 Response 对象来指定请求的 OpenAPI,即当调用具体云产品接口时还需配置对应云产品的 SDK 依赖信息。 下面是请求云服务器 DescribeRegions 接口和短信服务 SendSms 接口示例,入参和返回值描述请参见各云产品文档中 API 文档。

依赖信息

<!--    核心依赖-->
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-core</artifactId>
      <version>4.6.3</version>
    </dependency>
<!--    云服务器依赖-->
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-ecs</artifactId>
      <version>4.24.59</version>
    </dependency>
<!--    短信服务依赖-->
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
      <version>2.2.1</version>
    </dependency>

代码示例

package com.aliyun.sample;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.ecs.model.v20140526.DescribeRegionsRequest;
import com.aliyuncs.ecs.model.v20140526.DescribeRegionsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;

public class Sample {

    public static void main(String[] args) throws ClientException {
        // 地域Id,用于自动寻址,更多请参见 Endpoint 配置章节
        String regionId = "cn-shanghai";
        // 通过读取环境变量
        EnvironmentVariableCredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();
        DefaultProfile profile = DefaultProfile.getProfile(regionId);
        // 通过 SDK Core 保存用户的 profile 信息并初始化 client
        DefaultAcsClient client = new DefaultAcsClient(profile, credentialsProvider);
        // 实例化 DescribeRegionsRequest 对象
        DescribeRegionsRequest describeRegionsRequest = new DescribeRegionsRequest();
        // 实例化 SendSmsRequest 对象并传递入参
        SendSmsRequest sendSmsRequest = new SendSmsRequest();
        sendSmsRequest.setPhoneNumbers("<phoneNumbers>");
        // 通过 SDK Core 执行实际的 Http 请求将返回的结果序列化为 SDK 的 Response 结构
        DescribeRegionsResponse describeRegionsResponse = client.getAcsResponse(describeRegionsRequest);
        SendSmsResponse sendSmsResponse = client.getAcsResponse(sendSmsRequest);
        // 若请求成功则打印响应内容
        System.out.println(new Gson().toJson(describeRegionsResponse));
        System.out.println(new Gson().toJson(sendSmsResponse));
    }
}

说明

每个接口 API 都有独立的 Request,命名方式为 ${API}${Request},例如 DescribeRegionRequest。

  • 本页导读 (1)
文档反馈