За допомогою макросів можна надсилати дані на сервер HTTPs у будь-який час. Ви можете контролювати, які дані надсилаються та як вони організовуються, що спрощує адаптацію даних для використання з наявними службами.

Заходи безпеки:

  • Функція запиту клієнта HTTPs вимкнена за замовчуванням. Системний адміністратор повинен явно увімкнути цю функцію, встановивши для параметра HttpClient > Mode значення On ( xConfiguration HttpClient Mode: On ).

  • Системний адміністратор може запобігти використанню HTTP, встановивши для параметра HttpClient > AllowHTTP значення False (xConfiguration HttpClient AllowHTTP: False ).

  • Системний адміністратор може вказати список HTTP-серверів, на які пристрою дозволено надсилати дані. (Див. команди xCommand HttpClient Allow Hostname .)

  • Кількість одночасних HTTP-запитів обмежена.

Згадані в цій статті конфігурації доступні як з веб-інтерфейсу пристрою, так і в API. Команди доступні через API. Прочитайте статтю «Додаткові налаштування», щоб дізнатися, як отримати доступ до веб-інтерфейсу та використовувати API.

Список дозволених HTTP-серверів

Системний адміністратор може використовувати ці команди для налаштування та підтримки списку до десяти дозволених HTTP-серверів (хостів):

  • xCommand HttpClient Allow Hostname Add Expression: <Регулярний вираз, який відповідає імені хоста або IP адресою сервера HTTPs>

  • xCommand HttpClient дозволяє очистити ім'я хоста

  • xCommand HttpClient Дозволити список імен хостів

  • xCommand HttpClient дозволяє ім'я хоста видалити id: <id запису в списку>

Якщо список містить записи серверів, ви можете надсилати на ці сервери лише HTTP-запити. Однак, якщо список порожній, ви можете надсилати запити на будь-який сервер HTTPs.

Перевірка за списком дозволених серверів виконується як при використанні небезпечної (HTTP), так і безпечної (HTTPS) передачі даних.

HTTPS без перевірки сертифіката

При відправці запитів по HTTPS пристрій за замовчуванням перевіряє сертифікат HTTPS-сервера. Якщо сертифікат сервера HTTPS не виявиться дійсним, з'явиться повідомлення про помилку. Пристрій не надсилає жодних даних на цей сервер.

Ми рекомендуємо використовувати HTTPS із перевіркою сертифіката. Якщо перевірка сертифіката неможлива, системний адміністратор може встановити для параметра HttpClient > AllowInsecureHTTPS значення On ( xConfiguration HttpClient AllowInsecureHTTPS: On ). Це дозволяє використовувати HTTPS без перевірки сертифіката сервера.

Надсилання HTTP-запитів

Увімкнувши функцію запиту клієнта HTTPs, ви можете використовувати наведені нижче команди для надсилання запитів на сервер HTTPs. <method> це або Post , Put , Patch , Get , або Delete .

  • xCommand HttpClient <Method> [AllowInsecureHTTPS: <True/False>] [Заголовок: <Текст заголовка>] [ResponseSizeLimit: <Максимальний розмір відповіді>] [ResultBody: <None/PlainText/Base64>] [Тайм-аут: <Період очікування>] Посилання: <URL для відправки запиту>

Додавати поля заголовка необов'язково, і можна додати до 20 полів.

Параметр AllowInsecureHTTPS діє лише в тому випадку, якщо системний адміністратор дозволив використання HTTPS без перевірки сертифіката сервера. Якщо так, ви можете надсилати дані на сервер без перевірки сертифіката сервера, якщо для параметра встановлено значення True . Якщо ви пропустите параметр або встановите для нього значення False , дані не надсилаються, якщо перевірка сертифіката не пройдена.

Параметр ResposenSizeLimit — це максимальний розмір корисного навантаження (байти), який пристрій приймає як відповідь від сервера. Якщо набір корисних даних відповіді більший за цей максимальний розмір, команда повертає помилку стану. У повідомленні про помилку йдеться про те, що перевищено максимальний розмір файлу. Однак це не впливає на сторону сервера; Сервер отримав і обробив запит належним чином.

Використовуйте параметр ResultBody , щоб вирішити, як форматувати тіло відповіді HTTP від сервера в результаті команди. У вас є три варіанти:

  • Немає : не включайте тіло відповіді HTTP у результат команди.

  • Base64 : Base64 кодує тіло перед тим, як включити його в результат.

  • PlainText : включіть тіло в результат як звичайний текст. Якщо відповідь містить літери, які не можна надрукувати, команда повертає помилку стану з повідомленням про те, що виявлено дані, які не підлягають друку.

Використовуйте параметр Timeout , щоб встановити період очікування (секунди). Якщо запит не виконується протягом цього періоду, 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': заголовки }, команда); } 

Те ж саме можна зробити і в командному рядку за допомогою API:

 xcommand HttpClient поставив заголовок: "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 чи потрібна вам допомога з макросами та стороннім кодом.