
# 应用侧Java SDK使用指南
物联网平台提供Java语言的应用侧SDK供开发者使用。本文介绍应用侧 Java SDK的安装和配置，及使用Java SDK调用[应用侧API](https://support.huaweicloud.com/api-iothub/iot_06_v5_0001.html)的示例。
#### SDK获取和安装
1. 安装Java开发环境。 
   访问[Java官网](https://www.oracle.com/java/technologies/javase-downloads.html)，下载并说明安装Java开发环境。
   ![](https://support.huaweicloud.com/sdkreference-iothub/public_sys-resources/note_3.0-zh-cn.png)
   华为云Java SDK支持Java JDK 1.8及其以上版本。
   
   
2. 安装Maven软件 
   通过 Maven 安装项目依赖是使用 Java SDK 的推荐方法，首先您需要[下载](https://maven.apache.org/download.cgi)并[安装 Maven](https://maven.apache.org/install.html) ，安装完成后您只需在 Java 项目的 pom.xml 文件加入相应的依赖项即可。
   
   
3. 安装Java SDK 
   添加Maven依赖：
   ```
   <dependency>
       <groupId>com.huaweicloud.sdk</groupId>
       <artifactId>huaweicloud-sdk-core</artifactId>
       <version>[3.0.40-rc, 3.2.0)</version>
   </dependency>
   <dependency>
       <groupId>com.huaweicloud.sdk</groupId>
       <artifactId>huaweicloud-sdk-iotda</artifactId>
       <version>[3.0.40-rc, 3.2.0)</version>
   </dependency>
   ```
   
   
 
#### 代码示例
![](https://support.huaweicloud.com/sdkreference-iothub/public_sys-resources/caution_3.0-zh-cn.png)
Maven依赖版本请使用版本区间，如您使用具体版本号，请使用3.0.60及以上。
以调用[查询设备列表](https://support.huaweicloud.com/api-iothub/iot_06_v5_0048.html)接口为例，以下代码示例向您展示使用应用侧 Java SDK的主要步骤：
1. 创建认证。
2. 创建IoTDAClient实例并初始化。
3. 实例化请求对象。
4. 调用查询设备列表接口。 
   ```
   package com.huaweicloud.sdk.test;
   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;
   import com.huaweicloud.sdk.core.region.Region;
   import com.huaweicloud.sdk.core.auth.BasicCredentials;
   import com.huaweicloud.sdk.iotda.v5.*;
   import com.huaweicloud.sdk.iotda.v5.model.*;
   public class ListDevicesSolution {
       // REGION_ID：如果是上海一，请填写"cn-east-3"；如果是北京四，请填写"cn-north-4";如果是华南广州，请填写"cn-south-1"
       private static final String REGION_ID = "<YOUR REGION ID>";
       // ENDPOINT：请在控制台的"总览"界面的"平台接入地址"中查看“应用侧”的https接入地址。
       private static final String ENDPOINT = "<YOUR ENDPOINT>";
       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");
           String projectId = "<YOUR PROJECTID>";
           // 创建认证
           ICredential auth = new BasicCredentials()
                  .withAk(ak)
                  .withSk(sk)
                  // 标准版/企业版需要使用衍生算法，基础版请删除配置"withDerivedPredicate"
                  .withDerivedPredicate(BasicCredentials.DEFAULT_DERIVED_PREDICATE)
                  .withProjectId(projectId);
           // 创建IoTDAClient实例并初始化
           IoTDAClient client = IoTDAClient.newBuilder()
                   .withCredential(auth)
                   // 标准版/企业版：需自行创建Region对象，基础版：请使用IoTDARegion的region对象，如"withRegion(IoTDARegion.CN_NORTH_4)"
                   .withRegion(new Region(REGION_ID, ENDPOINT))
                  // .withRegion(IoTDARegion.CN_NORTH_4)
                   // 配置是否忽略SSL证书校验， 默认不忽略
                   // .withHttpConfig(new HttpConfig().withIgnoreSSLVerification(true))
                   .build();
           // 实例化请求对象
           ListDevicesRequest request = new ListDevicesRequest();
           try {
               // 调用查询设备列表接口
               ListDevicesResponse response = client.listDevices(request);
               System.out.println(response.toString());
           } catch (ConnectionException e) {
               e.printStackTrace();
           } catch (RequestTimeoutException e) {
               e.printStackTrace();
           } catch (ServiceResponseException e) {
               e.printStackTrace();
               System.out.println(e.getHttpStatusCode());
               System.out.println(e.getErrorCode());
               System.out.println(e.getErrorMsg());
           }
       }
   }
   ```
   
   
| 参数                     | 说明                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|
| ak                     | 您的华为云账号访问密钥ID（Access Key ID）。请在华为云控制台"我的凭证 \> 访问密钥"页面上创建和查看您的 AK/SK。更多信息请查看[访问密钥](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html)。                                                                                                                                                                                                                                                  |
| sk                     | 您的华为云账号秘密访问密钥（Secret Access Key）。                                                                                                                                                                                                                                                                                                                                                                  |
| projectId              | 项目ID。获取方法请参见 [获取项目ID](https://support.huaweicloud.com/api-iothub/iot_06_v5_1001.html)。                                                                                                                                                                                                                                                                                                             |
| IoTDARegion.CN_NORTH_4 | 请替换为您要访问的物联网平台的区域，当前物联网平台可以访问的区域，在SDK代码[IoTDARegion.java](https://github.com/huaweicloud/huaweicloud-sdk-java-v3/tree/master/services/iotda/src/main/java/com/huaweicloud/sdk/iotda/v5/region/IoTDARegion.java)中已经定义。 您可以在控制台上查看当前服务所在区域名称，区域名称、区域和终端节点的对应关系，具体步骤请参考[地区和终端节点](https://support.huaweicloud.com/devg-iothub/iot_02_1004.html#section0)。 |
| REGION_ID              | 如果是上海一，请填写"cn-east-3"；如果是北京四，请填写"cn-north-4";如果是华南广州，请填写"cn-south-4"                                                                                                                                                                                                                                                                                                                               |
| ENDPOINT               | 请在控制台的"总览"界面的"平台接入地址"中查看"应用侧"的https接入地址。                                                                                                                                                                                                                                                                                                                                                           |
   
![](https://support.huaweicloud.com/sdkreference-iothub/public_sys-resources/note_3.0-zh-cn.png)
项目源码及更多详细的使用指导请参考[华为云Java软件开发工具包（Java SDK）](https://github.com/huaweicloud/huaweicloud-sdk-java-v3/blob/master/README_CN.md)。
推荐您使用API在线调试工具[API Explorer](https://console.huaweicloud.com/apiexplorer/#/apidoc/IoTDA) ，API Explorer 支持快速调试和检索，调试API的同时，可以根据您的参数实时生成各种开发语言的SDK示例代码，方便您直接根据示例代码使用SDK。
