客户端初始化和请求方式

更新时间:

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

SDK客户端初始化

在V1.0 SDK中,所有的云产品都共用同一个客户端。该客户端通过Core SDK中的方法初始化生成一个Client对象来处理所有的请求。

说明

示例采用读取环境变量的方式创建凭证,运行代码前需配置环境变量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET。具体操作,请参见在Linux、macOS和Windows系统配置环境变量

依赖信息

    <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";
        // 通过读取环境变量获取AccessKey
        EnvironmentVariableCredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();
        DefaultProfile profile = DefaultProfile.getProfile(regionId);
        // 通过 SDK Core 保存用户的 profile 信息并初始化 client
        DefaultAcsClient client = new DefaultAcsClient(profile, credentialsProvider);
    }
}
说明

单Client的模式存在线程不安全的问题,而且通过一个profile信息在不同产品之间混用,容易造成的权限管理问题,建议您使用V2.0 SDK开发。

OpenAPI请求方式

在V1.0 SDK中,所有OpenAPI请求均通过SDK Core统一处理。云产品SDK中提供了OpenAPI的Request和Response对象,方便开发者简单应用,从而简化云服务调用和提高开发效率。以下是请求云服务器ECS 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>5.11.7</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";
        // 通过读取环境变量获取AccessKey
        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));
    }
}
说明

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

进阶文档

更多客户端初始化方式,请参见管理访问凭据