マクロを使えば、必要なときにいつでも HTTP (S) サーバーにデータを送信できます。 送信するデータとその整理方法を制御できるため、既存のサービスで使用できるようにデータを簡単に調整できます。
セキュリティ対策:
-
HTTP (S) クライアントリクエスト機能はデフォルトでは無効になっています。
システム管理者は、 :オン) に設定して、この機能を明示的に有効にする必要があります。 -
システム管理者は、 :False) に設定することで、HTTPの使用を防ぐことができます。 -
システム管理者は、デバイスがデータを送信できるHTTP (S) サーバーのリストを指定できます。 (
XCommand HttpClientの「 ホスト名を許可するコマンド」を参照してください。) -
同時 HTTP (S) リクエストの数には制限があります。
この記事で言及されている設定は、デバイスのウェブインターフェイスとAPIの両方から利用できます。 コマンドはAPIを介して利用できます。 Webインターフェイスへのアクセス方法やAPIの使用方法については、 詳細設定の記事を読んでください。
許可されている HTTP (S) サーバーのリスト
システム管理者は次のコマンドを使用して、最大10台まで許可されているHTTP (S) サーバー (ホスト) のリストを設定および管理できます。
-
コマンド HttpClient ホスト名追加式を許可する:<Regular expression that matches the host name or IP address of the HTTP (S) server> -
コマンド:HttpClient ホスト名のクリアを許可します -
コマンド HttpClient ホスト名リストを許可 -
コマンド HttpClient ホスト名許可IDの削除:<id of an entry in the list>
リストにサーバーエントリが含まれている場合、それらのサーバーにはHTTP (S) リクエストのみを送信できます。 ただし、リストが空の場合は、任意の HTTP (S) サーバーにリクエストを送信できます。
許可されたサーバーのリストとの照合は、安全でないデータ転送(HTTP)と安全な(HTTPS)転送の両方で行われます。
証明書検証なしの HTTPS
HTTPS経由でリクエストを送信する場合、デバイスはデフォルトでHTTPSサーバーの証明書をチェックします。 HTTPSサーバー証明書が有効でない場合は、エラーメッセージが表示されます。 デバイスはそのサーバーにデータを送信しません。
証明書検証にはHTTPSを使用することをお勧めします。 証明書の検証が不可能な場合、 :オン)に設定できます。 これにより、サーバーの証明書を検証しなくてもHTTPSを使用できます。
HTTP (S) リクエストを送信する
HTTP (S) クライアントリクエスト機能を有効にすると、次のコマンドを使用してHTTP (S) サーバーにリクエストを送信できます。
<method>は
、
ポスト、
プット
、
パッチ
、
取得
、
削除のいずれかです。
-
xcommand HTTPクライアント [安全でないHTTPSを許可する:] [ヘッダー:] [応答サイズ制限:] [結果本文:] [タイムアウト:] URL:<Method><True/False> <Header text><Maximum response size><None/PlainText/Base64> <Timeout period><URL to send the request to>
ヘッダーフィールドの追加はオプションで、最大20個のフィールドを追加できます。
allowInsecureHTTPSパラメータは、システム管理者がサーバーの証明書を検証せずにHTTPSの使用を許可した場合にのみ有効です。 もしそうなら、パラメータがTrueに設定されていれば、サーバー証明書を検証せずにデータをサーバーに送信できます。
パラメータを省略したり、
Falseに設定したりすると
、証明書の検証が失敗してもデータは送信されません。
resposenSizeLimitパラメータは、デバイスがサーバーからの応答として受け入れる最大ペイロードサイズ(バイト)です。 応答ペイロードがこの最大サイズより大きい場合、コマンドはステータスエラーを返します。 エラーメッセージは、最大ファイルサイズを超えていることを示しています。 ただし、これはサーバー側には影響しません。サーバーはリクエストを適切に受信して処理しました。
ResultBodyパラメータを使用して、コマンドリザルトのサーバーからのHTTP応答の本文をどのようにフォーマットするかを決定します。 選択肢は3つあります:
-
なし:コマンド結果にHTTPレスポンスの本文を含めないでください。 -
Base64:結果に含める前に本体をBase64でエンコードします。 -
プレーンテキスト:結果に本文をプレーンテキストとして含めます。 応答に印刷できない文字が含まれている場合、コマンドはステータスエラーを返し、印刷できないデータが見つかったことを示すメッセージが表示されます。
タイムアウト期間(秒)を設定するには、
Timeoutパラメータを使用してください。 この期間中にリクエストが完了しなかった場合、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クライアントリクエストの使用方法の詳細については、 カスタマイズガイドを参照してください 。 最新バージョンを選択してください。
シスコサポート(TAC)は、マクロを含むサードパーティコードのデバッグをサポートしていません。 マクロやサードパーティのコードについてサポートが必要な場合は、 https://roomos.cisco.com をチェックしてください。