藉由使用巨集,可隨時依需求傳送資料到 HTTP(S) 伺服器。您可以選擇要傳送什麼資料,並依所需設定其結構。這麼做之後,可以依照已建立的服務調整資料。

安全性措施:

  • HTTP(S) 客戶端請求功能預設設定為停用。系統管理員必須特地設定 HttpClient > 模式開啟(xConfiguration HttpClient 模式:開啟) 。

  • 系統管理員可以阻止HTTP的使用,將 HttpClient > AllowHTTP 設定為False xConfiguration HttpClient AllowHTTP:False ) 即可阻止。

  • 系統管理員可以指定允許裝置傳送資料的目標 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>

若清單不是空的,您只可傳送 HTTP(S) 請求至清單中的伺服器。若清單為空,則可以傳送請求至任何 HTTP(S) 伺服器。

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

HTTPS - 無驗證憑證

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

建議透過憑證驗證使用 HTTPS。若憑證驗證不可行,系統管理員可以設定 HttpClient > AllowInsecureHTTPS開啟 (xConfiguration HttpClient AllowInsecureHTTPS:開啟)。此允許使用 HTTPS 而不驗證伺服器的憑證。

傳送 HTTP(S) 請求

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

  • xCommand HttpClient <Method> [AllowInsecureHTTPS:<True/False> ] [標題:<Header text> ] [ResponseSizeLimit:<Maximum response size> ] [ResultBody:<None/PlainText/Base64> ] [Timeout:<Timeout period> ]Url:<URL to send the request to>

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

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

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

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

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

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

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

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

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

範例

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

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

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

function 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":"A user reported an issue with this system","systemName":"BoardRoom 4th floor","softwareVersion":"ce9.6.0","softwareReleaseDate":"2018-12-13","videoMonitors":"Dual"}
.

詳細資訊

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

Cisco 支援 (TAC) 不支援第三方程式碼偵錯,包括巨集。如需巨集與第三方代碼,請檢查 Cisco Collaboration 開發人員社群。此外,此網站上有許多開發人員與整合者資源。