在使用Alibaba Cloud SDK for Java前,确保您已经安装好Alibaba Cloud SDK for Java并获取了身份凭证。

本操作以ECS为例,介绍如何使用Alibaba Cloud SDK for Java发起请求。

  1. 新建一个AcsClient。
    IAcsClient client = new DefaultAcsClient(profile);
  2. 创建请求。

    请求类的命名规范为${apiName}Request,其中${apiName}为API名称,例如 DescribeInstances

    在引入多个产品SDK时,有可能存在Request类同名的情况,请注意按照package区分。
    DescribeInstancesRequest request = new DescribeInstancesRequest();
    request.setPageSize(10);
    request.setConnectTimeout(5000); //设置连接超时为5000毫秒
    request.setReadTimeout(5000); //设置读超时为5000毫秒
  3. 发起调用并处理应答。
    DescribeInstancesResponse response;
    try {
        response = client.getAcsResponse(request);
        for (DescribeInstancesResponse.Instance instance:response.getInstances()) {
            System.out.println(instance.getPublicIpAddress());
        }
    } catch (ServerException e) {
        e.printStackTrace();
    } catch (ClientException e) {
        e.printStackTrace();
    }

    正常情况下,应答中的所有字段,都会被反序列化到response中,您可以直接调用response.getXXX()来获得应答中的字段。

    instanceStatus := response.getStatus()

    如果出现了异常,或您需要原始HTTP应答的情况下,您可以通过以使用doAction()来获取原始应答。

    HttpResponse response = client.doAction(request);

示例代码

执行以下代码查询指定地域的ECS实例。

package TEST.TEST;
 import com.aliyuncs.profile.DefaultProfile;
 import com.aliyuncs.DefaultAcsClient;
 import com.aliyuncs.IAcsClient;
 import com.aliyuncs.exceptions.ClientException;
 import com.aliyuncs.exceptions.ServerException;
 import com.aliyuncs.ecs.model.v20140526.*;
 public class ECS {
     public static void main(String[] args) {
         // 创建DefaultAcsClient实例并初始化
         DefaultProfile profile = DefaultProfile.getProfile(
             "cn-hangzhou",          // 地域ID
             "LTAIiiarxj0AhJRX",      // RAM账号的AccessKey ID
             "kFTcJkI8fLXXXXXXXXXXXX"); // RAM账号Access Key Secret
         IAcsClient client = new DefaultAcsClient(profile);
         // 创建API请求并设置参数
         DescribeInstancesRequest request = new DescribeInstancesRequest();
         request.setPageSize(10);
         request.setConnectTimeout(5000); //设置连接超时为5000毫秒
         request.setReadTimeout(5000); //设置读超时为5000毫秒
         // 发起请求并处理应答或异常
         DescribeInstancesResponse response;
         try {
             response = client.getAcsResponse(request);
             for (DescribeInstancesResponse.Instance instance:response.getInstances()) {
                 System.out.println(instance.getPublicIpAddress());
             }
         } catch (ServerException e) {
             e.printStackTrace();
         } catch (ClientException e) {
             e.printStackTrace();
         }             
     }
 }