З макросами ви можете надсилати дані на HTTP-сервер у будь-який час, коли потрібно. Ви контролюєте те, які дані надсилаються і як вони організовані, що дозволяє легко адаптувати дані для використання з існуючими сервісами.
Заходи безпеки:
-
Функція запиту клієнта HTTP за замовчуванням вимкнена. Системний адміністратор повинен явно увімкнути цю функцію, встановивши mode на On (
xConfiguration HttpClient Mode: On). -
Системний адміністратор може запобігти використанню HTTP, встановивши HttpClient 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 Allow Host List -
xCommand HttpClient Дозволити ім'я хоста видалити ID: <ID запису у списку>
Якщо у списку є записи сервера, ви можете надсилати лише HTTP-запити цим серверам. Однак, якщо список порожній, ви можете надсилати запити на будь-який HTTP-сервер.
Перевірка за списком дозволених серверів виконується як при використанні незахищеної (HTTP), так і безпечної (HTTPS) передачі даних.
HTTPS без валідації сертифіката
Під час надсилання запитів через HTTPS пристрій за замовчуванням перевіряє сертифікат HTTPS-сервера. Якщо сертифікат HTTPS-сервера визнаний недійсним, з'являється повідомлення про помилку. Пристрій не надсилає жодних даних на цей сервер.
Рекомендуємо використовувати HTTPS з перевіркою сертифіката. Якщо перевірка сертифіката неможлива, системний адміністратор може встановити HttpClient On ( xConfiguration HttpClient AllowInsecureHTTPS: On ). Це дозволяє використовувати HTTPS без перевірки сертифіката сервера.
Надсилання HTTP-запитів
Після увімкнення функції запиту клієнта на HTTP ви можете використовувати наступні команди для надсилання запитів на HTTP-сервер. <метод> це або POST , PUT , Патч , Отримати або Видалити .
-
xCommand HttpClient <Method> [AllowInsecureHTTPS: <True/False>] [Заголовок: <Header text>] [ResponseSizeLimit: <Максимальний розмір відповіді>] [ResultBody: <Non/PlainText/Base64>] [Timeout: <Timeout period>] URL: <URL для надсилання запиту>
Додавання полів у заголовку є необов'язковим, і ви можете додати до 20 полів.
Параметр AllowInsecureHTTPS діє лише тоді, коли системний адміністратор дозволив використання HTTPS без перевірки сертифіката сервера. Якщо так, ви можете надіслати дані на сервер без перевірки сертифіката сервера, якщо параметр встановлений на True . Якщо ви пропустите параметр або встановите False , дані не надсилаються, якщо перевірка сертифіката не пройде.
Параметр ResposenSizeLimit — це максимальний розмір корисного навантаження (байт), який пристрій приймає як відповідь від сервера. Якщо корисне навантаження відповіді перевищує цей максимальний розмір, команда повертає помилку статусу. Повідомлення про помилку повідомляє, що максимальний розмір файлу перевищено. Однак це не впливає на серверну сторону; Сервер отримав і обробив запит належним чином.
Використовуйте параметр ResultBody , щоб вирішити, як відформатувати тіло HTTP-відповіді з сервера у командному результаті. У вас є три варіанти:
-
Немає: Не включайте тіло HTTP-відповіді у результат команди. -
Base64: Base64 кодує тіло перед тим, як включити його у результат. -
PlainText: Включити основне слово у результат у вигляді простого тексту. Якщо у відповіді є літери, які не можна друкувати, команда видає помилку статусу з повідомленням, що були знайдені непридатні для друку.
Використовуйте параметр Timeout , щоб встановити період тайм-ауту (секунди). Якщо запит не виконано протягом цього періоду, API повертає помилку.
Введіть корисне навантаження (дані) одразу після того, як ви виконали команду. Все, що ви вводите, включаючи розриви рядків, є частиною корисного навантаження. Після завершення закінчуйте розривом рядка ("\n") та окремим рядком, що містить лише крапку, а потім розрив рядка (".\n"). Тепер команда виконується, і дані надсилаються на сервер.
Приклади
Основна частина повідомлення — це JSON в обох цих прикладах. Це може бути будь-який формат, залежно від очікуваного формату сервісу, який отримує повідомлення.
Приклад 1: Керування IoT-пристроями за допомогою HTTP POST
Ось макрофункція, яка вмикає світло, підключене до мосту Philips Hue:
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 Заголовок: "Content-Type: application/json" URL: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} .
Приклад 2: Розміщення даних у інструменті моніторингу за допомогою HTTP POST
xcommand HttpClient POST Заголовок: "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 , якщо вам потрібна допомога з макросами та стороннім кодом.