文档首页 > > 开发指南> 应用侧开发> 使用API对接> 使用Java API Demo调测

使用Java API Demo调测

分享
更新时间: 2019/10/30 GMT+08:00

本文档基于调用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”即可,新的回调地址会覆盖原来的回调地址。

订阅完成后,开发者可参考src > com.huawei.testMessagePush > SimpleHttpServer.java搭建一个应用服务器来接收平台推送的Post消息(仅供参考)。如果需要在本地测试平台回调功能和查看回调内容,可以使用“JAVA API Demo”提供的类src > com.huawei.testMessagePush > TestSubscribeAllServiceNotification.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)信息。

设备接入

设备接入物联网平台后,才可以经由物联网平台与应用服务器进行数据交互。

开发中心提供了应用调试功能,可以模拟设备接入物联网平台的场景。如果不使用开发中心的应用调试功能,请使用真实设备接入物联网平台。如下为使用开发中心模拟设备接入平台的操作指导:

  1. 选择应用 > 应用调试,点击“使用虚拟设备”

  2. 系统将弹出“新建虚拟设备”窗口,根据提示选择一款产品。

数据上报

设备上报数据后,由物联网平台将设备上报的数据推送到订阅地址。开发中心提供了设备模拟器,可以模拟真实设备上报数据的场景。如果不使用开发中心的设备模拟器,请使用真实设备进行数据上报。

本文档基于设备模拟器和调用API接口的代码样例(Java)进行指导。为了便于开发者测试物联网平台是否已推送消息到订阅地址,调用API接口的代码样例(Java)中提供了一个简单的HTTP服务器,用于模拟接收推送数据的场景。

  1. 在eclipse中,选择src > com.huawei.testMessagePush > NotifyType.java,修改“TEST_CALLBACK_BASE_URL”,填写本地IP地址和端口号,端口号不能被本地其它程序占用。

  2. 右键单击src > com.huawei.testMessagePush > TestSubscribeAllServiceNotification.java,选择Run As > Java Application
  3. 在相应的项目空间内,选择应用 > 应用调试,使用在设备接入时创建的虚拟设备,进行数据上报。

    如果不使用开发中心的应用调试功能,请使用真实设备进行数据上报。

    “设备模拟器”区域,输入十六进制码流或者JSON数据(以十六进制码流为例),点击“发送”,在“IoT Platform”区域和应用服务器查看数据上报的结果,在“消息跟踪”区域查看物联网平台处理日志。

  4. 在eclipse中“TestSubscribeAllNotification.java”的控制台查看物联网平台推送给应用服务器的消息。

    此步骤也可以对“订阅”结果进行调测,比如订阅了“deviceAdded(添加新设备)”,则可以执行注册设备的操作后,在“TestSubscribeAllNotification.java”的控制台查看物联网平台推送的消息。

命令下发

应用服务器需要调用物联网平台的 “创建设备命令”接口 “设备服务调用”接口,对设备下发控制指令,接口信息详见API参考文档。
  • 当设备应用层接入协议为LWM2M时,使用“创建设备命令”进行命令下发。
  • 当设备应用层接入协议为MQTT协议时,使用“设备服务调用”进行命令下发。

本文档基于“创建设备命令”接口和调用API接口的代码样例(Java)进行指导,帮助开发者理解命令下发的场景。

  1. 在eclipse中,选择src > com.huawei.service.commandDelivery > CreateDeviceCommand.java,修改“deviceId”“serviceId”“method”“paras”的取值。

    配置说明如下:

    • “deviceId”在注册设备时获得。
    • “serviceId”“method”“paras”和Profile的定义一致。

  2. 右键点击“CreateDeviceCommand.java”,选择Run As > Java Application
  3. 在控制台查看命令下发的打印日志,如果获得“201 Created”响应,则说明命令已经下发到物联网平台。

    如果开发者使用开发中心的应用调试功能模拟设备接入和数据上报,可以在相应的项目空间内,选择应用 > 应用调试,选择在设备接入时创建的虚拟设备,查看接收到的命令。

    使用应用服务器进行命令下发后,在“设备模拟器”区域查看接收到的命令(以十六进制码流为例),在“消息跟踪”区域查看物联网平台处理日志。

其他接口

请参考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”之外的类进行单步调测时,需要程序第二次运行到设置断点的位置时,再查看变量内容。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区