С макросите можете да изпращате данни до HTTP сървър, когато имате нужда. Имате контрол върху това какви данни се изпращат и как са организирани, което улеснява адаптирането на данните за използване със съществуващи услуги.

Мерки за сигурност:

  • Функцията за заявка на HTTP клиент е деактивирана по подразбиране. Системният администратор трябва изрично да разреши функцията, като зададе 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 Разрешаване на име на хост Добавяне на израз: <Регулярен израз, който съответства на името на хоста или 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 заявки

След като функцията за заявка на HTTP клиент е разрешена, можете да използвате следните команди, за да изпращате заявки до HTTP сървър. <метод>е или Публикуване , Поставяне , Корекция , Получаване или Изтриване .

  • xCommand HttpClient <Method> [AllowInsecureHTTPS: <True/False>] [Заглавка: <Текст на заглавката>] [ResponseSizeLimit: <Максимален размер на отговора>] [ResultBody: <None/PlainText/Base64>] [Време за изчакване: <Период на изчакване>] 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 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 ако имате нужда от помощ с макроси и код на трети страни.