您可使用阿里云提供的Java SDK,來調用數據服務的API,從而更便捷地獲取指定數據。您可添加包含Maven依賴的SDK,也可下載安裝包到本地直接安裝。本文以調用預置指標API為例,介紹Java SDK調用API的方法及示例。
前提條件
如果需要調用預置指標API,需確保已創建產品和設備,并完成數據備份。具體操作,請參見預置指標API。
如果需要調用產品數據API或自定義服務API,需確保已創建對應API。具體操作,請參見產品數據API和自定義服務API。
更多信息,請參見管理與使用。
安裝SDK
安裝Java開發環境。
您可以從Java官方網站下載,并按說明安裝Java開發環境。
安裝IoT Java SDK。
訪問Apache Maven 官網下載Maven軟件。
安裝IoT Java SDK。
<dependency> <groupId>com.aliyun</groupId> <artifactId>tea-openapi</artifactId> <version>0.0.11</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>iot20180120</artifactId> <version>1.1.0</version> </dependency>
發起調用
以下為調用數據服務下預置指標API中歷史至今設備數量相關統計的示例代碼。您可參照參數說明,修改對應代碼,調用指定的API。
單個阿里云賬號調用數據服務API的每秒請求數(QPS)最大限制為100。
import com.aliyun.iot20180120.Client;
import com.aliyun.iot20180120.models.*;
import com.aliyun.teaopenapi.models.Config;
public class JavaDemo {
/**
* 使用AccessKey ID和AccessKey Secret初始化賬號Client
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
public static Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
Config config = new Config();
config.setAccessKeyId(accessKeyId);
config.setAccessKeySecret(accessKeySecret);
// 您的接入域名
config.setEndpoint("iot.cn-shanghai.aliyuncs.com");
return new Client(config);
}
public static void main(String[] args_) throws Exception {
// 您的AccessKey ID和AccessKey Secret
Client client = JavaDemo.createClient("LTAI4FyDFmKN************", "WF3onkl8cq3cTyVW8n************"));
ListAnalyticsDataRequest request = new ListAnalyticsDataRequest();
// 您的API Path
request.setApiPath("/iot-cn-npk1v******/system/query/hist_dev_cnt_stat");
// 您的API所在實例ID
request.setIotInstanceId("iot-cn-npk1v******");
//分頁參數:頁號
request.setPageNum(1);
//分頁參數:頁大小
request.setPageSize(100);
List<ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition> conditions = new ArrayList<>();
//您的業務相關的請求參數。Condition的配置說明,請參見下文的相關說明。
ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition condition = new ListAnalyticsDataRequest
.ListAnalyticsDataRequestCondition();
condition.setFieldName("__instance_id__");
condition.setOperate("=");
condition.setValue("iot-public");
conditions.add(condition);
ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition condition1 = new ListAnalyticsDataRequest
.ListAnalyticsDataRequestCondition();
condition1.setFieldName("entityId");
condition1.setOperate("=");
condition1.setValue("all");
conditions.add(condition1);
ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition condition2 = new ListAnalyticsDataRequest
.ListAnalyticsDataRequestCondition();
condition2.setFieldName("statDate");
condition2.setOperate("=");
condition2.setValue("20210221");
conditions.add(condition2);
request.setCondition(conditions);
ListAnalyticsDataResponse listAnalyticsDataResponse = client.listAnalyticsData(request);
System.out.println(JSON.toJSONString(listAnalyticsDataResponse));
}
}
系統請求參數:
名稱
類型
是否必傳
示例值
描述
accessKeyId
String
是
LTAI4FyDFmKN************
登錄物聯網平臺控制臺,將鼠標移至賬號頭像上,然后單擊AccessKey管理,獲取AccessKey ID和AccessKey Secret。
說明 如果使用RAM用戶,您需授予該RAM用戶管理物聯網平臺的權限(AliyunIOTFullAccess),否則將連接失敗。授權方法請參見授權RAM用戶訪問物聯網平臺。accessKeySecret
String
是
WF3onkl8cq3cTyVW8n************
Endpoint
String
是
iot.cn-shanghai.aliyuncs.com
apiPath
String
是
/iot-cn-npk1v******/system/query/hist_dev_cnt_stat
API路徑。在數據服務的API列表下,單擊API對應的查看,進入API詳情頁,可查看API Path的值。更多信息,請參見管理API。
iotInstanceId
String
是
iot-cn-npk1u******
API所在的實例ID。
pageNum
Integer
開啟分頁時必傳
10
分頁的頁碼。
pageSize
Integer
開啟分頁時必傳
100
每頁顯示結果的條數,最大值為100。
業務相關的請求參數:
名稱
類型
是否必傳
說明
相關代碼
FieldName
String
是
請求參數名稱。
condition.setFieldName("entityId");
Operate
String
是
請求參數對應的操作符。可選:
=
:指定請求參數為特定值。BETWEEN
:指定請求參數為特定范圍。IN
:指定請求參數為多個值。!=
:指定請求參數不可為特定值。
condition.setOperate("=");
Value
String
否
請求參數的賦值。
重要當操作符為非
BETWEEN
時,該參數必傳。condition.setValue("all");
BetweenStart
String
否
請求參數表示范圍時的起始值。
重要當操作符為
BETWEEN
時,該參數必傳。condition.setBetweenStart("0");
BetweenEnd
String
否
請求參數表示范圍時的終止值。
重要當操作符為
BETWEEN
時,該參數必傳。condition.setBetweenEnd("100");
一個請求參數對應一個
condition
。在API詳情頁,查看API的請求參數,您可配置指定數量的condition
。關于如何查看API請求參數的信息,請參見管理API。本文示例代碼中,該API有3個請求參數__instance_id__、entityId、statDate分別對應
condition
、condition 1
、condition 2
。
運行結果
成功:
在對應API的詳情頁,您可查看返回參數的詳細說明。具體操作,請參見管理與使用。
以下示例為調用API成功后的結果,即:從2021年2月21日起至調用API時,公共實例下的設備數量相關統計情況。
{ "body": { "data": { "hasNext": false, "pageNum": 1, "pageSize": 100, "resultJson": "[{\"statDate\":\"20210221\",\"actDevCnt\":2942,\"onlineDevCntCompare\":0.00,\"livelyDevCntCompare\":8.99,\"livelyDevCnt\":1527,\"onlineDevRate\":23.08,\"crtDevCnt\":169025,\"livelyDevRate\":51.90,\"crtDevCntCompare\":0.08,\"onlineDevCnt\":679,\"actDevRate\":1.74,\"actDevCntCompare\":4.55}]" }, "requestId": "6B78B8DB-EBDB-4451-BE30-893714******", "success": true }, "headers": { "access-control-allow-origin": "*", "date": "Mon, 15 Mar 2021 07:24:01 GMT", "content-length": "425", "access-control-max-age": "172800", "x-acs-request-id": "6B78B8DB-EBDB-4451-BE30-893714******", "access-control-allow-headers": "X-Requested-With, X-Sequence, _aop_secret, _aop_signature", "connection": "keep-alive", "content-type": "application/json;charset=utf-8", "access-control-allow-methods": "POST, GET, OPTIONS" } }
失敗:
通過調用失敗結果中的錯誤碼,您可了解失敗的原因。關于錯誤碼更多信息,請參見錯誤碼。
以下示例為調用API失敗后的結果,即:參數
__instance_idd__
為無效的請求參數,將其更正為__instance_id__
后,重新發起調用。