查询设备列表
引导式阅读
Java
查询设备列表
作者
C***
上架时间
2023-11-14 01:40:16

0. 版本说明

本示例基于华为云SDK V3.0版本开发。

1. 简介

华为云提供了IoT设备接入SDK,您可以直接集成服务端SDK来调用IoTDA的相关API,从而实现查询设备列表功能。该示例展示了如何通过java版SDK来查询设备列表。

2. 开发前准备

  • 注册 华为云,并完成 实名认证
  • 已开通 IoTDA服务。访问设备接入IoTDA产品首页,单击“免费试用”,即可自助开通服务。
  • 已具备开发环境 ,支持Java JDK 1.8及其以上版本。
  • 已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的AK/SK。具体请参见 访问密钥
  • 已获取IoTEdge服务对应区域(北京四)的项目ID,请在华为云控制台“我的凭证 > API凭证”页面上查看项目ID。具体请参见 API凭证

3. 安装SDK

您可以通过Maven方式获取和安装SDK,首先需要在您的操作系统中下载并安装Maven ,安装完成后您只需要在Java项目的pom.xml文件中加入相应的依赖项即可。

使用服务端SDK前,您需要安装“huaweicloud-sdk-core”和“huaweicloud-sdk-iotda”,具体的SDK版本号请参见 SDK开发中心

<dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-core</artifactId> <version>[3.0.1-rc, 3.1.0-rc)</version> </dependency> <dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-iotda</artifactId> <version>[3.0.1-rc, 3.1.0-rc)</version> </dependency>

4. 开始使用

4.1 导入依赖模块

// 用户身份认证 import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.auth.ICredential; // 请求异常类 import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; // 导入IoTDA的客户端相关内容 import com.huaweicloud.sdk.iotda.v5.*; // 导入服务区域枚举 import com.huaweicloud.sdk.iotda.v5.region.IoTDARegion; // 导入IoTEdge 接口的request和response类 import com.huaweicloud.sdk.iotda.v5.model.*;

4.2 初始化认证信息

// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份认证为例,运行示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); ICredential auth = new BasicCredentials() .withDerivedPredicate(AbstractCredentials.DEFAULT_DERIVED_PREDICATE) // 在衍生ak/sk认证场景下使用 .withAk(ak) .withSk(sk);

相关参数说明如下所示:

  • ak:华为云账号Access Key。
  • sk:华为云账号Secret Access Key 。

4.3 初始化IoTDA的客户端

IoTDAClient client = IoTDAClient.newBuilder() .withCredential(auth) .withRegion(IoTDARegion.valueOf("cn-north-4")) .build(); }

相关参数说明如下所示:

service region: 服务所在区域,当前支持北京四

  • cn-north-4 北京四

5. 示例代码

使用如下代码查询设备列表,调用前请根据实际情况替换如下变量,以及各个方法中包含的参数:

  • < YOUR AK >
  • < YOUR SK >
  • < YOUR PRODUCT ID >
  • < YOUR APP ID >

5.1 查询设备列表

public class ListDevicesDemo { public static void main(String[] args) { // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份认证为例,运行示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); ICredential auth = new BasicCredentials() .withDerivedPredicate(AbstractCredentials.DEFAULT_DERIVED_PREDICATE) // 在衍生ak/sk认证场景下使用 .withAk(ak) .withSk(sk); IoTDAClient client = IoTDAClient.newBuilder() .withCredential(auth) .withRegion(IoTDARegion.valueOf("cn-north-4")) .build(); ListDevicesRequest request = new ListDevicesRequest(); request.withProductId("<YOUR PRODUCT ID>"); request.withAppId("<YOUR APP ID>"); try { ListDevicesResponse response = client.listDevices(request); System.out.println(response.toString()); } catch (ConnectionException | RequestTimeoutException e) { System.out.println(e.getMessage()); } catch (ServiceResponseException e) { System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }

6.接口及参数说明

参见:查询设备列表

7. 参考

更多示例信息请参考IoTDA

8. 修订记录

发布日期 文档版本 修订说明
2022-8-17 1.0 文档首次发布