开发者可以通过Java SDK,调用物联网数据分析中生成的API。物联网平台的Java SDK让开发人员可以方便地使用Java程序操作物联网平台。开发者可以使用Maven依赖添加SDK,也可以下载安装包到本地直接安装SDK。
步骤一:安装SDK
- 登录Java官方网站,按说明安装Java开发环境。
- 安装IoT Java SDK。
步骤二:初始化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 columnName 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的资源定位符。
- your_param_name:待查询数据的请求参数名称。
- your_param_value:待查询数据的请求参数值。
- your_param_type:待查询数据的请求参数值的数据类型。详细说明请参见JDBCType。
- your_param_value_N:通过SQL语句的in表达式生成的请求参数中的某个值。说明 SQL语句的in表达式最多可支持传入100个值,但in表达式中传入值的个数加上API其他请求参数值的总个数不能超过100个。
例如:API的请求参数共有10个,其中有一个是in表达式类型的,则该in表达式中可传入值个数最大为91个。