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

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

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

  • Системният администратор може да предотврати използването на HTTP чрез настройка HttpClient > Разрешаване на HTTP да се Невярно ( 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 > Разрешаване на несигурен HTTPS да се На ( 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 полета.

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

На 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 ако имате нужда от помощ с макроси и код на трети страни. Освен това на този сайт има много ресурси за разработчици и интегратори.