全部產品
Search
文件中心

IoT Platform:.NET SDK使用說明

更新時間:Sep 05, 2024

物聯網平台提供.NET語言的雲端SDK供開發人員使用。本文介紹雲端.NET SDK的安裝和配置,及使用.NET SDK調用雲端API的樣本。

安裝SDK

  1. 安裝.NET開發環境。

    阿里雲.NET SDK支援的開發環境如下:

    • .NET Framework 4.5及以上版本。

    • .NET Standard 2.0及以上版本。

    • C# 4.0及以上版本。

    • Visual Studio 2010及以上版本。

  2. 安裝SDK核心庫OpenAPI。

    • 通過.NET CLI工具來安裝。

      以下命令預設安裝此軟體包的新版本。如果要安裝指定版本,請添加--version 指定版本號碼

      dotnet add package AlibabaCloud.OpenApiClient 
    • 通過配置.csproj檔案引入依賴後,再使用命令安裝。

      1. 添加依賴。

        <PackageReference Include="AlibabaCloud.OpenApiClient" Version="0.0.13" />
      2. 通過以下命令安裝。

        dotnet build
  3. 通過NuGet封裝管理員安裝IoT .NET SDK。具體內容,請參見NuGet包

    • 使用Visual Studio的安裝方式:

      1. 在Visual Studio的方案總管中,按右鍵您的專案後,在菜單中選擇管理NuGet程式包

      2. NuGet 管理面板中,單擊瀏覽

      3. 在選項卡中,輸入AlibabaCloud.SDK,然後在列表中選擇Authors為aliyun-openapi-sdk的AlibabaCloud.SDK.Iot20180120。SDK說明,請參見AlibabaCloud.SDK.Iot20180120

      4. 單擊安裝

    • 其他安裝方式:

      • 通過dotnet命令列安裝。更多版本資訊,請參見物聯網平台SDK中心

        # 安裝新版本
        dotnet add package AlibabaCloud.SDK.Iot20180120
        
        # 指定sdk版本,以3.0.9版本為例
        dotnet add package AlibabaCloud.SDK.Iot20180120 --version 3.0.9
      • 使用包管理安裝。

        # 安裝新版本
        Install-Package AlibabaCloud.SDK.Iot20180120
        
        # 指定sdk版本,以3.0.9版本為例
        Install-Package AlibabaCloud.SDK.Iot20180120 -Version 3.0.9

    .NET SDK源碼資訊,請參見alibabacloud-csharp-sdk

初始化SDK

  1. ​建立AlibabaCloud.OpenApiClient.Models.Config對象config,存放SDK初始化資訊(AccessKey IDAccessKey Secret 、地區ID等)。

  2. 建立AlibabaCloud.SDK.Iot20180120.Client對象執行個體client,通過AlibabaCloud.SDK.Iot20180120.Client(config)構造方法載入SDK資訊,完成SDK用戶端初始化。

    後續調用API的RequestResponse參數從AlibabaCloud.SDK.Iot20180120.Models中擷取。

以華東2(上海)地區及其服務接入地址為例,初始代碼如下。實際情境設定中,需使用您的物聯網平台服務所在地區。

AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config();
// 您的AccessKey ID。
config.AccessKeyId = Environment.GetEnvironmentVariable("ACCESS_KEY_ID");
// 您的AccessKey Secret。
config.AccessKeySecret = Environment.GetEnvironmentVariable("ACCESS_KEY_SECRET");
// 您的可用性區域ID。
config.RegionId = "cn-shanghai";
AlibabaCloud.SDK.Iot20180120.Client client = new AlibabaCloud.SDK.Iot20180120.Client(config);

參數

說明

AccessKeyId

您阿里雲帳號的AccessKey ID

您可在阿里雲官網控制台AccessKey管理中建立或查看您的AccessKey。

AccessKeySecret

您阿里雲帳號的AccessKey Secret

RegionId

您的物聯網平台服務的地區ID,用於拼接服務接入地址,格式為:iot.${RegionId}.aliyuncs.com。

您可在物聯網平台控制台左上方,查看當前服務所在地區。

地區ID的表達方法,請參見地區和可用性區域

發起調用

物聯網平台雲端SDK為每個API封裝兩個類,分別命名為${API名稱}+"Request"${API名稱}+"Response",分別用於承載API的調用請求和調用結果。

調用步驟

  1. 已完成SDK用戶端初始化。具體內容,請參見初始化SDK

  2. 建立對應API的調用請求,產生${API名稱}+"Request"類對象執行個體request

  3. 通過對象執行個體request,使用request.${請求參數的名稱}方法,設定AIP所需的請求參數值。

  4. 建立${API名稱}+"Response"類的對象執行個體response承載響應結果:使用Client對象執行個體client${API名稱}(request)方法,擷取API對應request的響應結果,包含服務端響應的bodyheaders

  5. 通過對象執行個體responsebody成員對象,使用response.body.${返回參數的名稱}方法,可擷取對應返回參數的值。

    例如:response.body.RequestId用於擷取阿里雲為API請求產生的唯一識別碼,其中RequestId為API的通用返回參數。通用返回參數還包含SuccessErrorMessageCode

  6. 使用catch()方法處理異常報錯。

物聯網平台雲端API,請參見API列表。有關request中請求參數說明,及response中返回參數說明,請參見對應API文檔。

本文以調用Pub介面發布訊息到Topic為例。請求參數資訊,請參見Pub

重要

以下代碼中iotInstanceId為執行個體ID。執行個體的詳細說明,請參見執行個體概述

購買執行個體方法,請參見購買企業版執行個體

AlibabaCloud.SDK.Iot20180120.Models.PubRequest request = new AlibabaCloud.SDK.Iot20180120.Models.PubRequest
{
    // 物聯網平台執行個體ID。
    IotInstanceId = "${iotInstanceId}",
    // 產品ProductKey。
    ProductKey = "${productKey}",
    // 要發送的訊息主體,hello world Base64 String。
    MessageContent = Convert.ToBase64String(Encoding.Default.GetBytes("Hello World.")),
    // 要接收訊息的裝置的自訂Topic。
    TopicFullName = "/${productKey}/${deviceName}/user/get",
    // 指定訊息的發送方式,支援QoS0和QoS1。
    Qos = 0,
};
//通過client對象獲得對應request的響應對象response。
try
{
    AlibabaCloud.SDK.Iot20180120.Models.PubResponse response = client.Pub(request);
    Console.WriteLine("publish message result: " + response.Body.Success);
    Console.WriteLine(response.Body.Code);
    Console.WriteLine(response.Body.ErrorMessage);
}
catch (TeaException error)
{
    Console.WriteLine(error.Code);
    Console.WriteLine(error.Message);
}
catch (Exception _error)
{
    Console.WriteLine(_error.Message);
    Console.WriteLine(_error.StackTrace);
}

完整程式碼範例

說明

實際情境中,請參照上文的參數說明,替換對應參數值。

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading.Tasks;

using Tea;
using Tea.Utils;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {
        /**
         * 使用AK&SK初始化Client。
         * @param accessKeyId 
         * @param accessKeySecret
         * @param regionId
         * @return Client
         * @throws Exception
         */
        public static AlibabaCloud.SDK.Iot20180120.Client CreateClient()
        {
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config();
            // 您的AccessKey ID。
            config.AccessKeyId = Environment.GetEnvironmentVariable("ACCESS_KEY_ID");
            // 您的AccessKey Secret。
            config.AccessKeySecret = Environment.GetEnvironmentVariable("ACCESS_KEY_SECRET");
            // 您的可用性區域ID。
            config.RegionId = "cn-shanghai";
            return new AlibabaCloud.SDK.Iot20180120.Client(config);
        }


        public static void Main(string[] args)
        {
            try
            {
                AlibabaCloud.SDK.Iot20180120.Client client = CreateClient("${accessKey}", "${accessKeySecret}");
                AlibabaCloud.SDK.Iot20180120.Models.PubRequest request = new AlibabaCloud.SDK.Iot20180120.Models.PubRequest
                {
                    // 物聯網平台執行個體ID。
                    IotInstanceId = "${iotInstanceId}",
                    // 產品ProductKey。
                    ProductKey = "${productKey}",
                    // 要發送的訊息主體,hello world Base64 String。
                    MessageContent = Convert.ToBase64String(Encoding.Default.GetBytes("Hello World.")),
                    // 要接收訊息的裝置的自訂Topic。
                    TopicFullName = "/${productKey}/${deviceName}/user/get",
                    // 指定訊息的發送方式,支援QoS0和QoS1。
                    Qos = 0,
                };
                AlibabaCloud.SDK.Iot20180120.Models.PubResponse response = client.Pub(request);
                Console.WriteLine("publish message result: " + response.Body.Success);
                Console.WriteLine(response.Body.Code);
                Console.WriteLine(response.Body.ErrorMessage);
            }
            catch (TeaException error)
            {
                Console.WriteLine(error.Code);
                Console.WriteLine(error.Message);
            }
            catch (Exception _error)
            {
                Console.WriteLine(_error.Message);
                Console.WriteLine(_error.StackTrace);
            }
        }
    }
}

附錄:範例程式碼

前往物聯網平台雲端SDK樣本中心查看或下載API調用的範例程式碼。範例程式碼中包含Java、Python、PHP、Node.js、Go、C++和.NET等版本SDK樣本。

阿里雲OpenAPI開發人員門戶提供API線上調試工具。在API調試頁面,您可以快速檢索和體驗調用API。系統會根據您輸入的參數同步產生各語言SDK的程式碼範例。各語言SDK程式碼範例顯示在頁面右側SDK樣本頁簽下供您參考。在調用結果頁簽下,可查看API調用的真實請求URL和JSON格式的返回結果。