С макросите можете да изпращате данни към HTTP сървър, когато имате нужда. Имате контрол върху това какви данни се изпращат и как са организирани, което улеснява адаптирането на данните за използване с съществуващи услуги.
Мерки за сигурност:
-
Функцията за заявка на клиент в HTTP е деактивирана по подразбиране. Системният администратор трябва изрично да активира функцията, като настрои на 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 Хост име Добавяне Израз: <Редовен израз, който съвпада с името на хоста или IP адреса на HTTP сървъра> -
xCommand HttpClient позволява изчистване на името на хоста -
xCommand HttpClient Allow Host Name List -
xCommand HttpClient Allow Hostname Remove ID: <ID от запис в списъка>
Ако списъкът съдържа сървърни записи, можете да изпращате HTTP заявки само към тези сървъри. Въпреки това, ако списъкът е празен, можете да изпращате заявки към всеки HTTP сървър.
Проверката спрямо списъка с позволени сървъри се извършва както при използване на несигурен (HTTP), така и при сигурен (HTTPS) трансфер на данни.
HTTPS без валидиране на сертификат
При изпращане на заявки през HTTPS, устройството по подразбиране проверява сертификата на HTTPS сървъра. Ако сертификатът на HTTPS сървъра не е валиден, получавате съобщение за грешка. Устройството не изпраща никакви данни към този сървър.
Препоръчваме използването на HTTPS с валидиране на сертификати. Ако валидирането на сертификата не е възможно, системният администратор може да настрои на On ( xConfiguration HttpClient AllowInsecureHTTPS: On ). Това позволява използването на HTTPS без валидиране на сертификата на сървъра.
Изпращане на HTTP заявки
След като функцията за клиентски заявки на HTTP е активирана, можете да използвате следните команди, за да изпращате заявки към HTTP сървър. <метод> е или POST , PUT , Patch , Get или Delete .
-
xCommand HttpClient <Method> [AllowInsecureHTTPS: <Вярно/Невярно>] [Заглавие: <Header text>] [ResponseSizeLimit: <Максимален размер на отговора>] [ResultBody: <Няма/PlainText/Base64>] [Timeout: <Timeout период>] 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 ако имате нужда от помощ с макроси и код на трети страни.