透過巨集,您可以在需要時將資料傳送到 HTTPs 伺服器。 您可以控制發送的資料及其組織方式,從而可以輕鬆調整資料以與現有服務一起使用。

安全性措施:

  • HTTP(S) 客戶端請求功能預設設定為停用。 系統管理員必須透過將 HttpClient > 模式 設定為 來明確啟用此功能開啟 xConfiguration HttpClient 模式:開啟 )。

  • 系統管理員可以透過將 HttpClient > AllowHTTP 設定為 False (<a15>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 設定為 開啟 xConfiguration HttpClient AllowInsecureHTTPS:開啟 )。 此允許使用 HTTPS 而不驗證伺服器的憑證。

傳送 HTTP 請求

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

  • xCommand HttpClient <方法> [AllowInsecureHTTPS:<True/False>] [標頭:<標頭文字>] [ResponseSizeLimit:<最大回應大小>] [ResultBody:<None/PlainText/Base64>] [逾時:<逾時時間>] 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 = '內容類型:application/json'; var 指令 = '{"on":true}'; xapi.command('HttpClient Put', { 'Url':url, 'Header':headers }, command); } 

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

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

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

 xcommand HttpClient Post 標頭:"Content-Type:application/json" URL:"https://mymonitoringserver.com/service/devicemonitoring" {"Message":"使用者回報了此系統的問題","systemName":"BoardRoom 4 樓","softwareVersion":"ce9.6.0","softwareReleaseDate":"2018-12-13","videoMonitors":"雙"} . 

詳細資訊

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

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