更新时间:2023-04-10 GMT+08:00
分享

使用Java API Demo调测(联通用户专用)

本文档基于调用API接口的代码样例(Java)进行指导,接口信息详见API参考文档。

准备Java开发环境

本小节以Windows操作系统为例,介绍安装JDK1.8以及安装Eclipse的方法,如果您使用其它类型的开发环境,请根据自己的需要完成部署。

  1. 进入Java JDK官网,下载JDK1.8版本(比如:jdk-8u161-windows-x64.exe),双击进行安装。
  2. 配置Java环境变量。

    1. 右键单击“计算机”,选择“属性”

    2. 点击“高级系统设置”

    3. 点击“环境变量”

    4. 配置系统变量。需配置3个变量:JAVA_HOME、Path、CLASSPATH(不区分大小写)。若变量名已经存在,则点击“编辑”;若变量名不存在,则点击“新建”。一般Path变量存在,JAVA_HOME变量和CLASSPATH变量需要新增。

      JAVA_HOME指明JDK安装路径,配置示例:C:\ProgramFiles\Java\jdk1.8.0_45。此路径下包括lib,bin等文件夹。

      Path变量使系统可以在任何路径下识别Java命令。如果Path变量已经存在,则需在变量值最后添加路径,配置示例:;C:\Program Files\Java\jdk1.8.0_45\bin;C:\Program Files\Java\jdk1.8.0_45\jre\bin。

      两个路径之间需要使用“;”分割,分号是英文半角。

      CLASSPATH为Java加载类(class或lib)路径,只有配置CLASSPATH,Java命令才能识别。配置示:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar。

      :路径以“.”开始,表示当前路径。

    5. 选择开始 > 运行,输入“cmd”,执行命令:java -version、java、javac。如果命令可以执行,则说明环境变量配置成功。

  3. 前往Eclipse官网,下载Eclipse安装包,直接解压缩到本地即可使用。

导入Demo工程

  1. 运行Eclipse,选择File > New > Project,在弹出的对话框中选择“Java Project”,点击“Next”

  2. 填写“Project name”,JRE版本选择“JavaSE-1.8”,点击“Finish”

  3. 下载API JAVA Demo,并解压。
  4. 完成解压后,拷贝(Ctrl+C)“Open source components”“src”文件夹。

  5. 打开在Eclipse创建的工程,点击选中工程名称,将拷贝的文件粘贴(Ctrl+V)到该工程目录下。

    粘贴完成后,“src”目录下的文件存在错误。

  6. 右键单击工程名称,选择Properties > Java Build Path > Libraries > Add JARs,在弹出框中选中“Open source components”目录下的所有jar文件,点击“OK”

    导入jar文件之后,“src”目录下文件的错误消失。

应用接入

应用服务器需要调用物联网平台的“鉴权”接口,完成应用服务器和物联网平台的对接,接口信息详见API参考文档。

本文档基于调用API接口的代码样例(Java)进行指导,帮助开发者理解“鉴权”接口的调用。

  1. 在eclipse中,选择src > com.utils > Constant.java,修改BASE_URL、APPID、SECRET,然后保存(Ctrl+S)。

    配置说明如下:

    • BASE_URL:填写应用对接地址/端口号。
    • APPID:填写创建应用或项目后获取的应用ID。
    • SECRET:填写创建应用或项目后获取的应用密钥。

  2. 在eclipse中,选择src > com.huawei.service.appAccessSecurity,右键单击“Authentication.java”,选择Run As > Java Application

  3. 在控制台查看响应消息的打印日志,如果获得accessToken,说明鉴权成功。

    accessToken请妥善保存,以便于在调用其它接口时使用。

    如果没有得到正确的响应,请检查全局常量是否修改正确,并排除网络问题。

订阅数据

应用服务器通过调用物联网平台的“订阅平台业务数据”接口,告知物联网平台消息推送的地址和通知类型,比如设备业务数据、设备告警等,接口信息详见API参考文档。

在订阅场景下,物联网平台是客户端,应用服务器是服务端,物联网平台调用应用服务器的接口,并向应用服务器推送消息。在Java API Demo中,使用HTTP协议接收物联网平台的推送消息,不需要在物联网平台加载CA证书。

本文档基于调用API接口的代码样例(Java)进行指导,帮助开发者理解“订阅平台业务数据”接口的调用。

  1. 在eclipse中,选择src > com.huawei.utils > Constant.java,修改“CALLBACK_BASE_URL”,填写回调的IP地址和端口号。

    同一个应用下,所有订阅类型的回调地址的IP和端口必须一致。回调地址的合法性和连通性可以通过开发中心的“订阅调试”功能进行检测。

  2. 在eclipse中,选择src > com.huawei.service.subscribtionManagement,右键单击“SubscribeServiceNotification.java”,选择Run As > Java Application

  3. 在控制台查看响应消息的打印日志,如果所有类型的订阅均获得“201 Created”响应,则说明订阅成功。

    如需修改订阅的回调地址,在“Constants.java”类中修改“CALLBACK_BASE_URL”的值,再次运行

    “SubscribeServiceNotification.java”即可,新的回调地址会覆盖原来的回调地址。

注册设备

应用服务器通过调用物联网平台的“注册直连设备”接口,在物联网平台添加设备,接口信息详见API参考文档。

本文档基于调用API接口的代码样例(Java)进行指导,帮助开发者理解“注册直连设备”接口的调用。

  1. 在eclipse中,选择src > com.huawei.service.deviceManagement > RegisterDirectConnectedDevice.java ,修改“verifyCode”“nodeId”“timeout”“manufacturerId”“manufacturerName”“deviceType”“model”“protocolType”的取值。

    配置说明如下:

    • “verifyCode/nodeId”需要与真实设备的唯一标识符(IMEI或mac)一致。如果使用的是设备模拟器,则“verifyCode”可以是数字、字母和特殊符号的组合,开发者可自行定义,但不可以与其它设备的verifyCode重复。
    • “timeout”单位是“秒”“timeout”的取值作用如下:
      • timeout = 0,注册的设备不会过期。
      • timeout > 0,真实设备必须在设置的时间内上线,否则注册的设备会因为过期而被物联网平台删除。如果不携带timeout,则默认过期时间是180秒。
      • 在设备绑定成功后,“timeout”不再起作用,注册的设备不会过期。
    • “manufacturerId”“manufacturerName”“deviceType”“model”“protocolType”需要与对应的Profile保持一致。

  2. 右键单击“RegisterDirectConnectedDevice.java”,选择Run As > Java Application
  3. 在控制台查看响应消息的打印日志,如果获得“deviceId”,则说明注册成功。

    可以在开发中心的产品 > 设备管理中,查看新注册的设备是否已经显示。此时,注册设备只有设备ID(deviceId)信息。

其他接口

请参考API参考文档完成其他接口业务的开发。

单步调测

为了更直观地查看应用程序发送的消息及物联网平台的响应消息,以下方法使用了Eclipse的断点调试方法。

  1. 在最终发出http/https消息的代码处设置断点。例如:在样例代码“HttpsUtil.java”中的“executeHttpRequest”方法设置3个断点(请根据您代码的实际情况打断点)。

  2. 右键单击需要调测的类,例如:“Authentication.java(根据您建立的工程类型进行选择)”,选择Debug As > Java Application
  3. 当程序在断点位置停止运行后,点击“Step Over”进行单步调试。此时可以在“Variables”窗口查看相应变量的内容,包括发送的消息及物联网平台的响应消息。

  4. “Variables”窗口中展开“request”变量,查看请求消息的内容。

    1. 选中“request”变量时,可以在下方内容展示区看到应用程序发送请求的URL;在“entity”中可以看到发送的消息内容。

    2. 应用ID(appId)和应用密钥(secret)在“content”字段内,使用十进制的ASCII码表示,需要对照ASCII码表将其转化为字母和符号。

  5. “Variables”窗口中展开“response”变量,查看响应消息的内容。

    在代码样例中,“Authentication.java”之外的类均会先调用鉴权接口。因此,在对“Authentication.java”之外的类进行单步调测时,需要程序第二次运行到设置断点的位置时,再查看变量内容。

相关文档