За допомогою макросів можна надсилати дані на сервер 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 адресою сервера HTTP>

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

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

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

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

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

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

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

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

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

Увімкнувши функцію запиту клієнта HTTPs, ви можете використовувати наведені нижче команди для надсилання запитів на сервер HTTPs. <метод>це або Опублікувати , Поставити , Виправити , Отримати або Видалити .

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

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

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

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

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

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

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

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

Використовуйте параметр «Тайм-аут », щоб встановити період очікування (секунди). Якщо запит не виконується протягом цього періоду, 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":"Користувач повідомив про проблему з цією системою", "systemName":"BoardRoom 4th floor","softwareVersion":"ce9.6.0","softwareReleaseDate":"2018-12-13","videoMonitors":"Dual"} . 

Додаткова інформація

Дізнайтеся більше про те, як використовувати запити клієнтів HTTP, у Посібнику з налаштування. Виберіть останню версію.

Підтримка Cisco (TAC) не підтримує налагодження стороннього коду, включно з макросами. Будь ласка, перевірте https://roomos.cisco.com чи потрібна вам допомога з макросами та стороннім кодом.