利用巨集,可隨時傳送資料到 HTTPs 伺服器。 您可以控制發送哪些數據及其組織方式,從而可以輕鬆調整數據以用於現有服務。

安全性措施:

  • HTTP(S) 客戶端請求功能預設設定為停用。 系統管理員必須通過將 HttpClient > Mode 設置為 On (xConfiguration HttpClient Mode:On 來顯式啟用該功能。

  • 系統管理員可以通過將 HttpClient > AllowHTTP 設為 False xConfiguration HttpClient AllowHTTP:False )來阻止使用 HTTP。

  • 系統系統管理員可以指定允許裝置傳送資料的目標 HTTP(S) 伺服器清單。 (請檢視 xCommand HttpClient 允許主機名命令。)

  • 同時可發出的HTTP(S) 請求數是有限制的。

此文章參考組態可同時從裝置 Web 介面和 API 組態使用。 可通過 API 獲得命令。 讀取進階設定文章以取得如何存取 Web 介面和使用 API 的相關資訊。

允許的 HTTP(S) 伺服器清單

系統管理員可以使用下列指令設定及維護最多十個允許的 HTTP(S) 伺服器(主機)清單:

  • xCommand HttpClient 允許主機名稱新增運算式:<符合 HTTP(S) 伺服器之主機名稱或 IP 位址的規則運算式 >

  • xCommand HttpClient 允許主機名稱清除

  • xCommand HttpClient 允許主機名稱清單

  • xCommand HttpClient 允許主機名稱移除 ID:<清單中的項目 ID>

如果清單包含伺服器條目,則只能向這些伺服器發送 HTTPs 請求。 但是,若清單為空,則可以傳送請求至任何 HTTPs 伺服器。

當使用非安全 (HTTP) 和安全 (HTTPS) 資料轉接時,同時執行允許的伺服器清單檢查。

HTTPS - 無憑證驗證

透過 HTTPS 傳送請求時 ,裝置會依預設檢查 HTTPS 伺服器的憑證。 如果發現到 HTTPS 伺服器憑證無效,您會收到錯誤訊息。 裝置不會傳送任何資料至該伺服器。

建議透過憑證驗證使用 HTTPS。 如果無法驗證憑證,系統管理員可以將 HttpClient >AllowInsecureHTTPS On xConfiguration HttpClient AllowInsecureHTTPS:On )。 此允許使用 HTTPS 而不驗證伺服器的憑證。

傳送 HTTPs 請求

HTTP(S) 客戶端請求功能驗證後,您可以使用下列指令傳送 Post 及 Put 請求至 HTTP(S) 伺服器: <方式> Post, Put, Patch, Get, 或 Delete

  • xCommand HttpClient <Method> [AllowInsecureHTTPS:<True/False>] [Header:<Header text>] [ResponseSizeLimit:<最大回應大小>] [ResultBody:<None/PlainText/Base64>] [Timeout:<Timeout period>] Url:<將要求傳送到的 URL>

新增標題欄位是選用的,您最多可新增 20 個欄位。

只有在系統管理員已允許使用 HTTPS 而不驗證伺服器的憑證時,AllowInsecureHTTPS 參數才會有效果。 若如此,如果參數設定為 True,您可以傳送資料至伺服器而不驗證伺服器憑證。 若忽略參數或設定為 False,當憑證驗證失敗時將不傳送資料。

ResponseSizeLimit 參數是裝置可接受自伺服器的最大有效負載回應之大小(位元)。 如果回應有效負載大於此最大大小,則該命令將回傳狀態錯誤訊息, 為已超出最大文件大小。 但這並不影響伺務器端,因伺服器已正確接收並處理了請求。

使用 ResultBody 參數以決定命令結果中來自伺服器的 HTTP 回應的主要內容的格式。 您將有三個選擇:

  • :不要在命令結果中包含 HTTP 回應的內容。

  • Base64 編碼:Base64 在結果中放入回應內容之前對其進行編碼。

  • 純文字:將回應內容以純文字格式放入結果中。 若回應包含不可列印的字母,則該命令將回傳遭遇不可列印資料的狀態錯誤訊息。

使用逾時參數設置逾時時間(秒)。 如果在此期間未完成請求,則 API 會回傳錯誤。

已發出指令後,可直接輸入負載(資料)。 輸入的任何資料包括分行符號,均屬於負載的一部分。 完成時,以分行符號 ("\n") 結束,而分隔行只包含一個句點後加分行符號 (".\n")。 此時已執行指令,且資料已傳送至伺服器。

範例

在下列兩個範例中,訊息的本文是 JSON。 格式不限,完全取決於接收訊息的服務的預期格式。

範例 1:使用 HTTP Post 的 IoT 裝置控制

以下是可開啟連接至 Philips Hue Bridge 燈號的巨集功能:

 函數 hue_command(data){ var url = 'http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state'; var headers = 'Content-Type:application/json'; var command = '{“on”:true}'; xapi.command('HttpClient Put',{ 'Url':url,'Header':headers },command); } 

您可以使用 API 在指令行執行相同作業:

 xcommand HttpClient Put header:“Content-Type:application/json”URL:“http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state”{“on”:true}。 

範例 2:使用 HTTP Post 張貼資料至監控工具

 xcommand HttpClient Post Header:“Content-Type:application/json”URL:“https://mymonitoringserver.com/service/devicemonitoring”{“Message”:“一位使用者報告此系統的問題”,“systemName”:“BoardRoom 4th floor”,“softwareVersion”:“ce9.6.0”,“softwareReleaseDate”:“2018-12-13”,“videoMonitors”:“Dual”}。 

詳細資訊

自訂指南尋找有關如何使用 HTTP 客戶端請求的詳細資訊。 請選擇最新版本。

Cisco 支援 (TAC) 不支援第三方程式碼(包括巨集)的偵錯。 如果您需要宏和第三方代碼方面的説明,請檢查 https://roomos.cisco.com