开发者可以通过Java SDK,调用物联网数据分析中生成的API。物联网平台的Java SDK让开发人员可以方便地使用Java程序操作物联网平台。开发者可以使用Maven依赖添加SDK,也可以下载安装包到本地直接安装SDK。

步骤一:安装SDK

  1. 登录Java官方网站,按说明安装Java开发环境。
  2. 安装IoT Java SDK。
    1. 访问Apache Maven官网,下载Maven软件。
    2. 添加Maven项目依赖。IoT Java SDK的Maven依赖包坐标如下所示。
      <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-iot -->
      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>aliyun-java-sdk-iot</artifactId>
          <version>6.10.0</version>
      </dependency>
      说明 version可为6.10.0及以上版本。
    3. 依赖公共包如下所示。
      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>aliyun-java-sdk-core</artifactId>
          <version>4.3.5</version>
      </dependency>
      说明 version可为除4.4.5版本以外的4.3.5及以上版本。目前,4.4.5版本不支持向前兼容。

步骤二:初始化SDK

参考如下内容,初始化SDK。

说明 以下示例以华东2(上海:cn-shanghai)地域及其服务接入地址为例。您在设置时,需使用您自己的物联网平台地域和对应的服务接入地址。
String accessKey = "<your accessKey>";
String accessSecret = "<your accessSecret>";
DefaultProfile.addEndpoint("cn-shanghai", "cn-shanghai", "Iot", "iot.cn-shanghai.aliyuncs.com");
IClientProfile profile = DefaultProfile.getProfile("cn-shanghai", accessKey, accessSecret);
DefaultAcsClient client = new DefaultAcsClient(profile); //初始化SDK客户端

其中,<your accessKey>为您账号的AccessKeyId, <your accessSecret>为AccessKeyId对应的AccessKeySecret。您可在阿里云官网控制台AccessKey管理中创建或查看您的AccessKey。

步骤三:发起调用

以调用服务端订阅API接口,查询数据结果为例。

String apiSrn = "your_api_srn";

InvokeDataAPIServiceRequest.Param param = new InvokeDataAPIServiceRequest.Param();
// 请求参数名称
param.setParamName("your_param_name");
// 请求参数值
param.setParamValue("your_param_value");

// 如果通过可视化分析或SQL生成的API,使用了SQL语句的in表达式:where colunmName in (${your_param_name}),需要按照以下方式传参
InvokeDataAPIServiceRequest.Param inParam = new  InvokeDataAPIServiceRequest.Param();
// 请求参数名
inParam.setParamName("your_param_name");
// 请求参数值的数据类型
inParam.setListParamType(“your_param_type”);
// 请求参数值,均以String类型传入,由ListParamType指定具体数据类型
List<String> paramValueList = new ArrayList<>();
paramValueList.add("your_param_value_1");
paramValueList.add("your_param_value_2");
... ...
paramValueList.add("your_param_value_N");
inParam.setListParamValues(paramValueList);

InvokeDataAPIServiceRequest request = new InvokeDataAPIServiceRequest();
request.setApiSrn(apiSrn);
// 如果只有一个请求参数,使用Arrays.asList(param)表示request的参数
// request.setParams(Arrays.asList(param));
// 如果有多个请求参数,使用Arrays.asList(param1, param2, ... ..., paramN)表示request的参数
request.setParams(Arrays.asList(param, inParam));

// 当param为空时用请求方式用GET,如果不为空是用POST
request.setSysMethod(MethodType.POST);

try {
    InvokeDataAPIServiceResponse response = acsClient.getAcsResponse(request);

    System.out.println(response.getSuccess());
    System.out.println(response.getErrorMessage());

    // 服务API指定的SQL查询结果
    List<Map<Object, Object>> result = response.getData().getResultList();
    System.out.println(result);

} catch (ClientException ce) {
    ce.printStackTrace();
}

其中,部分参数按如下说明,替换为您实际API对应的值。

  • your_api_srn:API的资源定位符。APISrn地址
  • your_param_name:待查询数据的请求参数名称。数据API请求参数名称
  • your_param_value:待查询数据的请求参数值。
  • your_param_type:待查询数据的请求参数值的数据类型。详细说明请参见JDBCType
  • your_param_value_N:通过SQL语句的in表达式生成的请求参数中的某个值。
    说明 SQL语句的in表达式最多可支持传入100个值,但in表达式中传入值的个数加上API其他请求参数值的总个数不能超过100个。

    例如:API的请求参数共有10个,其中有一个是in表达式类型的,则该in表达式中可传入值个数最大为91个。