全部產品
Search
文件中心

IoT Platform:Java SDK調用樣本

更新時間:Jun 30, 2024

您可使用阿里雲提供的Java SDK,來調用資料服務的API,從而更便捷地擷取指定資料。您可添加包含Maven依賴的SDK,也可下載安裝包到本地直接安裝。本文以調用預置指標API為例,介紹Java SDK調用API的方法及樣本。

前提條件

  • 如果需要調用預置指標API,需確保已建立產品和裝置,並完成資料備份。具體操作,請參見預置指標API

  • 如果需要調用產品資料API或自訂服務API,需確保已建立對應API。具體操作,請參見產品資料API自訂服務API

更多資訊,請參見管理與使用

安裝SDK

  1. 安裝Java開發環境。

    您可以從Java官方網站下載,並按說明安裝Java開發環境。

  2. 安裝IoT Java SDK。

    1. 訪問Apache Maven 官網下載Maven軟體。

    2. 安裝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

    阿里雲服務的API服務端地址。其中,地區需與物聯網平台產品地區保持一致。

    本樣本中,地區為華東2(cn-shanghai)。

    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 1condition 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__後,重新發起調用。

    Java調用失敗