作者:阿里云MVP洵云
上节回顾:手把手学IOT服务端API编程[6、查询设备申请状态]|MVP讲堂
上节介绍设备注册状态查询后,其实在实际使用过程中,有些用户在设备注册完成后,不但想知道设备的申请状态,而且还想要知道设备申请的信息。
比如这个设备注册成功后的具体id值,名称和secret.本节就对于有这种需求的情况,如何通过服务端提供接口来实现相应的功能;基于设备注册申请的appid号在
服务端的数据库中是唯一存在的这个现实,查询注册设备信息和查询注册设备状态类似,只需要提供设备注册时的申请appid号就可以,不需要提供设备所属产品的
key值,这种简化的输入,也方便的相关开发的设计;
而在服务端返回信息方面,如果提供的appid值有效而且实际存在的话,会返回给客户端当时对应这个appid值,创建那组设备的设备本身的id值,名字和secret;
接下来我们看一下具体实现;
1、脚本实现:
我们按照接口的要求,在框架页面上,提供appid这个输入参数框给用户输入;
ApplyId: <input type="text" name="ApplyId2">
而在实际的实现代码中,我们只需要使用get函数提取这个变量就可以了:
$ApplyId = $_GET["ApplyId2"];
接着引用查询设备列表的接口:
$request = new Iot\QueryPageByApplyIdRequest();
通过查看QueryPageByApplyIdRequest.php文件,可以知道由于返回的信息多个设备的相关信息,通常一页显示不下,所以这里提供了分页申请和页面条数配置的输入
接口,我们这里按照默认的每页指定显示10条记录,要求服务端返回第一页的信息内容;
$request->setPageSize(10);
$request->setCurrentPage(1);
$request->setApplyId($ApplyId);
调用通用的网络查询操作后,最后对返回信息进行分析;首先显示常用的requestid和success这两个通用的信息:
echo 'RequestId :'.$response->RequestId.'<br>';
echo 'Success :'.$response->Success.'<hr>';
然后通过一个循环来依次显示每个设备的相关信息:
$cnt = min($response->PageSize,$response->Total);
echo '当前设备个数'.$cnt.'[最多10个]<br><hr>';
for ($x=0; $x<$cnt; $x++) {
echo '设备Id :'.$response->ApplyDeviceList->ApplyDeviceInfo[$x]->DeviceId.'<br>';
echo '设备名称 :'.$response->ApplyDeviceList->ApplyDeviceInfo[$x]->DeviceName.'<br>';
echo '设备Secret :'.$response->ApplyDeviceList->ApplyDeviceInfo[$x]->DeviceSecret.'<hr>';
}
2、实际测试:
打开浏览器,转到我们框架脚本页面,这里为了得到一个有效的appid,我们首先注册5个设备:iotdev1-iotdev5,得到appid值后,
在我们这次的appid输入框中输入这个值,点击提交后,可以看到服务端给我们返回的这5个设备的相关信息;然后我们登陆到物联网的网页控制台,可以看到在我们
设备注册对应的产品下面,有五个设备的对应信息和这次的返回信息是一致的;
具体向关截图如下:
timelapse:http://www.xunyun17.xyz/ioto/step7-QueryPageByApplyIdRequest.mp4