- 最新动态
- 产品介绍
- 快速入门
- 用户指南
- 开发指南
-
API参考
- 北向API参考
- 北向JAVA SDK API参考
- 北向PHP SDK API参考
- 北向Python SDK API参考
- Agent Lite API参考(Android)
- Agent Lite API参考(C)
- Agent Lite API参考(Java)
- MQTT接口参考
-
常见问题
- 常见问题导航
- 产品规格
- 产品使用
-
二次开发
-
产品开发常见问题
- Profile定义
- 插件开发
-
设备开发
- 在物联网平台注册完设备,真实设备无法接入物联网平台
- 终端设备接入物联网平台时,出现513错误
- 物联网平台支持的DTLS加密算法有哪些
- AT+CGDCONT=1,"IP","CTNB" 中 CTNB 是什么
- 设备如何选择PSM、DRX、eDRX模式
- 设备收不到平台下发的命令
- 设备已经上报数据,但是物联网平台未收到
- 设备上报了数据,且日志无报错,但在历史数据中没有数据
- 设备收到命令需要多长时间
- 设备上报数据后,收不到物联网平台回复的数据上报响应
- 设备在一个位置上报数据成功,在另一个位置上报失败
- 设备上报了命令执行结果,但是命令状态未切换为成功
- 物联网平台支持大小端模式切换吗
- 省电模式DRX模式,设备1-2天未上报数据,下发命令失败
-
应用开发常见问题
-
接口调用
- 本地可以成功调用物联网平台的鉴权接口,但是在应用服务器调用失败
- 应用服务器调用接口报错如何定位
- 在线应用模拟器下发命令失败
- 模拟器下发命令成功,调用API下发命令失败
- 应用服务器下发命令失败,收到403的错误,提示回调地址冲突
- 应用服务器如何下发缓存命令
- 历史命令中显示的超期是什么意思
- 物联网平台下发命令有重发机制吗
- 历史命令中显示超时是什么意思
- 平台能批量下发命令吗
- 平台接口只能用Java调用吗
- 物联网平台的命令状态总共有几种
- 调用注册设备接口失败
- 之前调用接口成功,一段时间后参数不变,但是调用接口失败
- 之前对单个设备下发命令成功,一段时间后下发命令失败
- 历史数据中有数据,但是调用查询设备历史数据接口没有返回值
- 通过调用接口在物联网平台注册设备,一段时间后注册设备被平台删除
-
订阅与推送
- 调用订阅接口时,提示回调地址不合法
- 调用删除单个订阅接口时,subscriptionId如何获取
- 应用服务器收不到平台推送的数据
- 如何导出https推送证书
- 设备数据变化通知和批量设备数据变化通知的区别是什么
- 应用服务器如何获取设备的IMEI号
- 应用服务器收到数据,但是平台显示推送失败
- 历史数据中有数据,但是有时能推送到应用服务器,有时推不到
- 应用服务器如何获取物联网平台推送消息时使用的地址
- 物联网平台是否具有重推机制
- 应用服务器如何收到命令状态变化的通知
- 已订阅消息确认通知和命令响应通知,为何应用服务器收不到推送消息
- 物联网平台只支持HTTPS的回调地址吗
- 在同一个应用下,物联网平台可以将不同设备上报的数据,推送到两个服务器吗
- 订阅地址可以用域名吗
- 回调地址可以修改吗
- 调用订阅接口时,回调地址如何获取
-
接口调用
- 软/固件升级常见问题
- 其他常见问题
-
产品开发常见问题
- 通用参考
链接复制成功!
回调接口实现及证书制作
回调接口实现
新建一个类并继承PushMessageReceiver,可以参考Demo中的PushMessageReceiverTest类,需要接收哪一类消息就重写对应的方法,如:
1 2 3 4 5 |
@Override public void handleDeviceAdded(NotifyDeviceAddedDTO body) { System.out.println("deviceAdded ==> " + body); //TODO deal with deviceAdded notification } |
说明:
- 接收到平台推送的消息后,开发者需要根据业务进行处理,但不建议进行复杂计算、I/O操作或者可能长时间等待的动作,可以先写数据库,应用进入相应界面或者刷新界面再从数据库取数据并进行数据处理。
- 回调路径已在SDK中设置好了,所以在订阅时要注意订阅对应的回调地址,具体可参考《北向JAVA SDK API参考》文档中消息推送章节的接口。
- 回调的IP地址则是服务器的地址,需要是公网地址。
- Demo工程的回调端口配置在src\main\resource\application.properties中:
1 2
#specify the port of the web application server.port=8099
回调证书制作
本章节以自签名证书为例。如果是使用商用证书,请直接向CA机构申请。
- 打开windows命令行窗口,输入where java,找到jdk所在路径,进入jdk的bin路径。
1 2
where java cd /d {jdk的bin路径}
- 使用如下命令生成tomcat.keystore文件。
1
keytool -genkey -v -alias tomcat -keyalg RSA -keystore tomcat.keystore -validity 36500
须知:- 如果jdk的bin目录下已有tomcat.keystore,建议先将已有的tomcat.keystore移到别的路径下。
- “您的名字与姓氏是什么”要输入应用服务器的IP或域名。
- <tomcat>的密钥口令要与密钥库口令设置一致(最后一步按回车即可),输入的密钥库口令要记住,后续配置会使用到。
- 将IoT平台提供的根证书ca.pem放到jdk的bin目录下,并使用如下命令将其加到tomcat.keystore的信任证书链中。
1
keytool -import -v -file ca.pem -alias iotplatform_ca -keystore tomcat.keystore
输入密钥库口令,查看导入的证书内容,确认无误后,输入y即可。
说明:- 平台的测试根证书ca.pem可以在JAVA SDK包的cert目录下找到。
- 将IoT平台提供的根证书ca.pem加到tomcat.keystore的信任证书链后,由ca.pem签发的子证书就能得到应用服务器的信任。
- 将tomcat.keystore放到Demo工程目录下,例如:src\main\resources,打开src\main\resource\application.properties,添加如下配置。其中,server.ssl.key-store 为tomcat.keystore 所在路径,server.ssl.key-store-password为密钥库口令。
#one-way authentication (server-auth) server.ssl.key-store=./src/main/resources/tomcat.keystore server.ssl.key-store-password=741852963.
- 右键单击PushMessageReceiverTest,选择“Run As > Java Application ”,运行Demo中的PushMessageReceiverTest类。运行结果如下:
说明:
当有数据推送到应用服务器时,就会进入相应的回调函数中。
回调证书导出
- 使用浏览器打开回调地址https://server:8099/v1.0.0/messageReceiver,以Google为例,并查看证书。
server是应用服务器的地址(即本机地址),8099是在application.properties中配置的端口。
- 系统将弹出证书窗口,选择“详细信息”,单击“复制到文件”。
- 单击“下一步”,进入“导出文件格式”界面,选择“Base64编码”,然后单击“下一步”。
- 指定证书的保存路径,完成证书导出。
- 在“要导出的文件”界面,单击“浏览”,选择一个路径,输入文件名,单击“保存”,回到证书导出向导,单击“下一步”。
- 单击“完成”,完成证书导出。
须知:如果应用服务器最后部署到云上,可能会有多级证书,建议在部署完成后再导出证书。此时需要将证书链上面几级的证书一一导出。
- 在“要导出的文件”界面,单击“浏览”,选择一个路径,输入文件名,单击“保存”,回到证书导出向导,单击“下一步”。
- 若存在多级证书,需一一导出。
- 在“证书”窗口,选择“证书路径”,查看多级证书,选中证书路径中的某个证书,单击“查看证书”。
- 系统将弹出证书窗口,选择“详细信息”,然后重复上述导出证书的步骤,导出已选证书。
- 在“证书”窗口,选择“证书路径”,查看多级证书,选中证书路径中的某个证书,单击“查看证书”。
- 使用文本编辑器,将所有导出的证书以首尾相连的方式,合并为一个.pem格式的文件。该文件需要上传到IoT平台相应的应用下。
须知:
- Demo中的配置为单向认证,在导出证书后需要修改为双向认证。将以下配置打开(去掉注解,修改tomcat.keystore目录与密码),由于已将平台的根证书加入tomcat.keystore的信任证书链中,所以不需要再做其他修改,重启一下服务器即可。
#two-way authentication (add client-auth) server.ssl.trust-store=./src/main/resources/tomcat.keystore server.ssl.trust-store-password=741852963. server.ssl.client-auth=need
- 单向认证较之双向认证安全度低,请使用双向认证。
回调证书上传
- 登录开发中心,进入相关项目。
- 选择“应用 > 对接信息”,单击“证书管理”。
- 单击“添加”,上传证书。
父主题: JAVA SDK使用指南