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

本节主要介绍升级版 SDK 对于客户端的初始化以及 OpenAPI 请求方式。

SDK 客户端初始化

升级版 SDK 中因为具备完整的参数处理、返回值处理以及请求逻辑,所以可以给不同云产品的 SDK 生成不同的 Client 并包含其产品下所有的 OpenAPI 请求方法,可以使不同云产品之间的身份及鉴权信息隔离,使用上更加安全,下面是产品 ECS 的升级版 SDK 初始化示例:

public static void main(String[] args) {
    Config config = new openapi.models.Config();
    config.setAccessKeyId("<accessKeyId>");
    config.setAccessKeySecret("<accessSecret>");
    config.setRegionId("<regionId>");
    // 也可以直接设置 endpoint 指定请求地址,对于开发者而言更好理解
    // config.endpoint = "ecs.aliyuncs.com";
    ecs20140526.Client client = new ecs20140526.Client(config);
}

OpenAPI 请求方式

升级版 SDK 中每个产品的 Client 包含了所有的 OpenAPI,所以可以指定 OpenAPI 请求方法来请求,其方法名对应 OpenAPI 首字母小写,一般有三个:

  • 可以不用传入运行参数的请求方法。

public static void main(String[] args) {
    Config config = new openapi.models.Config();
    config.setAccessKeyId("<accessKeyId>");
    config.setAccessKeySecret("<accessSecret>");
    config.setRegionId("<regionId>");
    ecs20140526.Client client = new ecs20140526.Client(config);
    
    DescribeRegionsRequest describeRegionsRequest = new DescribeRegionsRequest();
    
    DescribeRegionsResponse resp = client.describeRegions(describeRegionsRequest);
    // response 包含服务端响应的 body 和 headers
    System.out.println(new Gson().toJson(resp.body));
    System.out.println(new Gson().toJson(resp.headers));
}
  • 需要传入运行参数的请求方法。

public static void main(String[] args) {
    Config config = new openapi.models.Config();
    config.setAccessKeyId("<accessKeyId>");
    config.setAccessKeySecret("<accessSecret>");
    config.setRegionId("<regionId>");
    ecs20140526.Client client = new ecs20140526.Client(config);
    RuntimeOptions runtimeOptions = new RuntimeOptions();
    
    DescribeRegionsRequest describeRegionsRequest = new DescribeRegionsRequest();
    
    DescribeRegionsResponse resp = client.describeRegionsWithOptions(describeRegionsRequest, runtimeOptions);
    // response 包含服务端响应的 body 和 headers
    System.out.println(new Gson().toJson(resp.body));
    System.out.println(new Gson().toJson(resp.headers));
}
  • 需要进行文件上传的请求方法,该方法默认需要传入运行时参数,这种方法只有需要用到文件上传的 OpenAPI 才会具备。

public static void main(String[] args) {
    Config config = new openapi.models.Config();
    config.setAccessKeyId("<accessKeyId>");
    config.setAccessKeySecret("<accessSecret>");
    config.setRegionId("<regionId>");
    facebody20191230.Client client = new facebody20191230.Client(config);
    RuntimeOptions runtimeOptions = new RuntimeOptions();
    // 读取文件并实例化文件流
    File f = new File("test.txt");
    InputStream in = new FileInputStream(f);

    DetectBodyCountAdvanceRequest reqeust = new DetectBodyCountAdvanceRequest();
    request.setImageURLObject(in);
    DetectBodyCountAdvanceReseponse resp = client.detectBodyCountAdvance(request, runtimeOptions);
    // response 包含服务端响应的 body 和 headers
    System.out.println(new Gson().toJson(resp.body));
    System.out.println(new Gson().toJson(resp.headers));
}
说明

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