物聯網平臺提供.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客戶端的HTTP請求配置、代理配置、超時機制、重試機制等配置方式,請參見V2.0 .NET SDK(推薦)。
發起調用
物聯網平臺云端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格式的返回結果。