С помощта на макроси можете да изпращате данни към HTTP(S) сървър, когато пожелаете. Можете да изберете какви данни да изпратите и да ги структурирате както желаете. Правейки го по този начин, можете да адаптирате данните към вече установена услуга.

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

  • Функцията за HTTP(S) клиентска заявка е деактивирана по подразбиране. Системният администратор трябва изрично да активира функцията, като зададе HttpClient > Режим на Включено ( xConfiguration HttpClient Mode: On ).

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

  • Системният администратор може да посочи списък с HTTP(S) сървъри, към които устройството има право да изпраща данни. (Вижте xCommand HttpClient Allow Hostname команди.)

  • Броят на едновременните HTTP(S) заявки е ограничен.

Конфигурациите, които се споменават в тази статия, са достъпни както от уеб интерфейса на устройството, така и в API. Командите са налични в API. Прочетете статията за разширени настройки за информация как да получите достъп до уеб интерфейса и да използвате API.

Списък на разрешените HTTP(S) сървъри

Системният администратор може да използва тези команди, за да настрои и поддържа списък от до десет разрешени HTTP(S) сървъра (хостове):

  • xCommand HttpClient Allow Hostname Add Expression: <Regular expression that matches the host name or IP address of the HTTP(S) server>

  • xCommand HttpClient Allow Hostname Clear

  • xCommand HttpClient Allow Hostname List

  • xCommand HttpClient Allow Hostname Remove Id: <id of an entry in the list>

Ако списъкът не е празен, можете да изпращате HTTP(S) заявки само до сървърите в списъка. Ако списъкът е празен, можете да изпратите заявките до всеки HTTP(S) сървър.

Проверката спрямо списъка с разрешени сървъри се извършва както при използване на незащитен (HTTP), така и при защитен (HTTPS) трансфер на данни.

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

Когато изпраща заявки през HTTPS, устройството проверява сертификата на HTTPS сървъра по подразбиране. Ако се установи, че сертификатът на HTTPS сървъра не е валиден, ще получите съобщение за грешка. Устройството не изпраща никакви данни към този сървър.

Препоръчваме да използвате HTTPS с валидиране на сертификата. Ако валидирането на сертификата не е възможно, системният администратор може да настрои HttpClient > AllowInsecureHTTPS на Включено ( xConfiguration HttpClient AllowInsecureHTTPS: On ). Това позволява използването на HTTPS без валидиране на сертификата на сървъра.

Изпращане на HTTP(S) заявки

След като функцията за HTTP(S) клиентска заявка е активирана, можете да използвате следните команди, за да изпращате заявки до HTTP(S) сървър. <method> е или Post , Put , Patch , Get или Delete .

  • xCommand HttpClient <Method> [AllowInsecureHTTPS: <True/False>] [Header: <Header text>] [ResponseSizeLimit: <Maximum response size>] [ResultBody: <None/PlainText/Base64>] [Timeout: <Timeout period>] Url: <URL to send the request to>

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

The AllowInsecureHTTPS параметърът има ефект само ако системният администратор е разрешил използването на HTTPS без валидиране на сертификата на сървъра. Ако е така, можете да изпращате данни към сървъра, без да проверявате сертификата на сървъра, ако параметърът е зададен на True . Ако пропуснете параметъра или го зададете на False , данните не се изпращат, ако валидирането на сертификата е неуспешно.

The ResposenSizeLimit е максималният размер на полезния товар (байтове), който устройството приема като отговор от сървъра. Ако полезният товар на отговора е по-голям от този максимален размер, командата връща грешка в състоянието. Съобщението за грешка казва, че максималният размер на файла е надвишен. Това обаче няма ефект върху сървърната страна; сървърът е получил и обработил правилно заявката.

Използвай ResultBody параметър, за да решите как да форматирате тялото на HTTP отговора от сървъра в резултата от командата. Имате три възможности:

  • None : Не включвайте тялото на 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":"A user reported an issue with this system","systemName":"BoardRoom 4th floor","softwareVersion":"ce9.6.0","softwareReleaseDate":"2018-12-13","videoMonitors":"Dual"} . 
   

Допълнителна информация

Намерете повече подробности за това как да използвате HTTP клиентски заявки в ръководството за персонализиране . Изберете най-новата версия.

Поддръжката на Cisco (TAC) не поддържа отстраняване на грешки на код на трети страни, включително макроси. Моля, проверете общността за разработчици на Cisco Collaboration , ако имате нужда от помощ за макроси и код на трети страни. Освен това на този сайт има много ресурси за разработчици и интегратори.