За допомогою макросів ви можете надсилати дані на сервер HTTP (S), коли вам потрібно. Ви можете контролювати, які дані надсилаються та як вони організовані, що полегшує адаптацію даних для використання з існуючими службами.
Заходи безпеки:
-
Функція запиту клієнта HTTP (S) вимкнена за замовчуванням. Системний адміністратор повинен явно увімкнути цю функцію, встановивши Вклю чено (
XConfiguration HttpClient Mode: On). -
Системний адміністратор може запобігти використанню HTTP, встановивши
Client AllowHTTP: Fal se). -
Системний адміністратор може вказати список серверів HTTP (S), на які пристрій може надсилати дані. (Див. Команди
XCommand HttpClient Дозволити ім'я хоста.) -
Кількість одночасних HTTP (S) запитів обмежена.
Конфігурації, про які йдеться в цій статті, доступні як з веб-інтерфейсу пристрою, так і в API. Команди доступні через API. Прочитайте стат тю Додат кові налаштування, щоб отримати інформацію про те, як отримати доступ до веб-інтерфейсу та використовувати API.
Список дозволених серверів HTTP (S)
Системний адміністратор може використовувати ці команди для налаштування та підтримки списку до десяти дозволених серверів HTTP (S) (хостів):
-
XCommand HttpClient Дозволити додавання виразу імені хоста:<Regular expression that matches the host name or IP address of the HTTP (S) server> -
XCommand HttpClient Дозволити ім'я хоста Очистити -
XCommand HttpClient Дозволити список імен хоста -
XCommand HttpClient Дозволити ім'я хоста Видалити ідентифікатор:<id of an entry in the list>
Якщо список містить записи сервера, ви можете надсилати лише HTTP (S) запити на ці сервери. Однак, якщо список порожній, ви можете надсилати запити на будь-який сервер HTTP (S).
Перевірка зі списком дозволених серверів виконується як при використанні незахищеної (HTTP), так і безпечної (HTTPS) передачі даних.
HTTPS без перевірки сертифіката
При відправці запитів по HTTPS пристрій перевіряє сертифікат HTTPS-сервера за замовчуванням. Якщо сертифікат сервера HTTPS не визнано дійсним, з'являється повідомлення про помилку. Пристрій не надсилає жодних даних на цей сервер.
Рекомендуємо використовувати HTTPS з перевіркою сертифіката. Якщо перевірка сертифікатів неможлива, системний адміністратор може встановити значення On). Це дозволяє використовувати HTTPS без перевірки сертифіката сервера.
Надсилання HTTP (S) запитів
Після увімкнення функції запиту клієнта HTTP (S) ви можете використовувати наведені нижче команди для надсилання запитів на сервер HTTP (S).
<method>це або Пу
бліка
ція,
Поставити
,
Ви
правити
,
Отрим ати або Ви
далити
.
-
XCommand HttpClient [Дозволити незахищені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
. Якщо ви виключите параметр або встановите для нього значення
Fal se
, дані не надсилаються, якщо перевірка сертифіката не вдається.
Параметр
respoSenSizeLimit
- це максимальний розмір корисного навантаження (байт), який пристрій приймає як відповідь від сервера. Якщо корисне навантаження відповіді перевищує цей максимальний розмір, команда повертає помилку стану. Повідомлення про помилку говорить про перевищення максимального розміру файлу. Однак це не впливає на сторону сервера; сервер отримав і обробив запит належним чином.
Використовуйте
параметр
resultBody, щоб вирішити, як відформатувати тіло відповіді HTTP від сервера в результаті команди. У вас є три варіанти:
-
Немає: Не включайте тіло відповіді HTTP у результат команди. -
Base64: Base64 кодує тіло, перш ніж включити його в результат. -
PlainText: включити тіло до результату як звичайний текст. Якщо відповідь містить недруковані літери, команда повертає помилку стану із повідомленням про те, що були виявлені недруковані дані.
Використовуйте
параметр T
imeout, щоб встановити період тайм-ауту (секунди). Якщо запит не завершено протягом цього періоду, API повертає помилку.
Введіть корисне навантаження (дані) відразу після того, як ви видали команду. Все, що ви вводите, включаючи розриви рядків, є частиною корисного навантаження. Після завершення завершіть розривом рядка («\ n») та окремим рядком, що містить лише крапку, за якою слідує розрив рядка (». \ n»). Тепер команда виконується, а дані відправляються на сервер.
Приклади
Тіло повідомлення є JSON в обох цих прикладах. Це може бути будь-який формат, залежно від очікуваного формату служби, яка отримує повідомлення.
Приклад 1: Управління пристроєм IoT за допомогою HTTP Post
Ось макрофункція, яка вмикає світло, підключене до 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) не підтримує налагодження стороннього коду, включаючи макроси. Будь ласка, перевір те https://roomos.cisco.com, якщо вам потрібна допомога з макросами та стороннім кодом.