物聯網平台提供.NET語言的雲端SDK供開發人員使用。本文介紹雲端.NET SDK的安裝和配置,及使用.NET SDK調用雲端API的樣本。
安裝SDK
安裝.NET開發環境。
阿里雲.NET SDK支援的開發環境如下:
.NET Framework 4.5及以上版本。
.NET Standard 2.0及以上版本。
C# 4.0及以上版本。
Visual Studio 2010及以上版本。
安裝SDK核心庫OpenAPI。
通過.NET CLI工具來安裝。
以下命令預設安裝此軟體包的新版本。如果要安裝指定版本,請添加
--version
指定版本號碼
。dotnet add package AlibabaCloud.OpenApiClient
通過配置.csproj檔案引入依賴後,再使用命令安裝。
添加依賴。
<PackageReference Include="AlibabaCloud.OpenApiClient" Version="0.0.13" />
通過以下命令安裝。
dotnet build
通過NuGet封裝管理員安裝IoT .NET SDK。具體內容,請參見NuGet包。
使用Visual Studio的安裝方式:
在Visual Studio的方案總管中,按右鍵您的專案後,在菜單中選擇管理NuGet程式包。
在NuGet 管理面板中,單擊瀏覽。
在選項卡中,輸入
AlibabaCloud.SDK
,然後在列表中選擇Authors為aliyun-openapi-sdk的AlibabaCloud.SDK.Iot20180120。SDK說明,請參見AlibabaCloud.SDK.Iot20180120。單擊安裝。
其他安裝方式:
通過
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
建立AlibabaCloud.OpenApiClient.Models.Config對象config,存放SDK初始化資訊(AccessKey ID 、AccessKey Secret 、地區ID等)。
建立AlibabaCloud.SDK.Iot20180120.Client對象執行個體client,通過
AlibabaCloud.SDK.Iot20180120.Client(config)
構造方法載入SDK資訊,完成SDK用戶端初始化。後續調用API的Request和Response參數從
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的調用請求和調用結果。
調用步驟
已完成SDK用戶端初始化。具體內容,請參見初始化SDK。
建立對應API的調用請求,產生
${API名稱}+"Request"
類對象執行個體request。通過對象執行個體request,使用request.${請求參數的名稱}方法,設定AIP所需的請求參數值。
建立
${API名稱}+"Response"
類的對象執行個體response承載響應結果:使用Client對象執行個體client的${API名稱}(request)
方法,擷取API對應request的響應結果,包含服務端響應的body和headers。通過對象執行個體response的body成員對象,使用
response.body.${返回參數的名稱}
方法,可擷取對應返回參數的值。例如:
response.body.RequestId
用於擷取阿里雲為API請求產生的唯一識別碼,其中RequestId為API的通用返回參數。通用返回參數還包含Success、ErrorMessage和Code。使用
catch()
方法處理異常報錯。
物聯網平台雲端API,請參見API列表。有關request中請求參數說明,及response中返回參數說明,請參見對應API文檔。
本文以調用Pub介面發布訊息到Topic為例。請求參數資訊,請參見Pub。
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格式的返回結果。