手把手學IOT服務端API程式設計[9、批量獲取裝置狀態]|MVP講堂
作者:阿里雲MVP洵雲
上節回顧:手把手學IOT服務端API程式設計[8、按裝置名查資訊]|MVP講堂
上節介紹按裝置名查資訊後,只能查詢一個裝置的資訊,實際使用過程中,如果使用者打算一次查詢多個裝置的狀態,服務端的API介面也提供了相應的功能,
這一節就來介紹一下這個介面的使用,這個介面需要提供兩個引數,一個是產品的key值,一個是裝置的名稱列表;
接下來我們看一下具體實現;
1、指令碼實現:
我們按照介面的要求,在框架頁面上,提供產品的key值和裝置名稱列表這兩個個輸入引數框給使用者輸入,其中名稱列表,我們要求使用者通過逗號分隔符的形式,
輸入一行裝置名稱列表,通過逗號來分割各個裝置名稱;
產品KEY: <input type="text" name="pkey9">
裝置名稱: <input type="text" name="devnames9">
而在實際的實現程式碼中,我們只需要使用get函式提取這個變數就可以了,其中我們呼叫了explode函式來講裝置名稱列表從字串分割成名稱列表的陣列:
$pkey = $_GET["pkey9"];
$devnames = $_GET["devnames9"];
接著引用查詢裝置列表的介面:
$request = new Iot\BatchGetDeviceStateRequest();
通過檢視BatchGetDeviceStateRequest.php檔案,可以知道我們需要呼叫setProductKey和setDeviceNames兩個函式,來給服務端傳送產品key值和裝置名稱;
$request->setProductKey($pkey);
$devnames_array=explode(',',$devnames);
$request->setDeviceNames($devnames_array);
呼叫通用的網路查詢操作後,最後對返回資訊進行分析;首先顯示常用的requestid和success這兩個通用的資訊:
echo 'RequestId :'.$response->RequestId.'<br>';
echo 'Success :'.$response->Success.'<hr>';
然後通過一個for迴圈依次顯示每個裝置的狀態,名稱等相關資訊:
echo '裝置狀態 :'.$response->DeviceStatusList->DeviceStatus[$x]->Status.'<br>';
echo '裝置Id :'.$response->DeviceStatusList->DeviceStatus[$x]->DeviceId.'<br>';
echo '裝置名稱 :'.$response->DeviceStatusList->DeviceStatus[$x]->DeviceName.'<br>';
echo '裝置最近線上時間 :'.$response->DeviceStatusList->DeviceStatus[$x]->LastOnlineTime.'<hr>';
2、實際測試:
開啟瀏覽器,轉到我們框架指令碼頁面,這裡輸入我們從控制檯得到的產品key值和裝置名稱列表,執行提交按鈕後,可以得到我們要查詢裝置列表的資訊,
和控制檯上的資訊是完全一致的;
具體向關截圖如下: