Макросы позволяют при необходимости отправлять данные на сервер HTTP(S). Вы можете управлять тем, какие данные отправляются и как они организованы, что упрощает их адаптацию для использования с существующими службами.

Меры безопасности:

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

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

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

  • Количество одновременно запросов HTTP(S) ограничено.

Конфигурации, упомянутые в этой статье, доступны как в веб-интерфейсе устройства, так и в API. Команды доступны через API. Информацию о том , как получить доступ к веб-интерфейсу и использовать API, ознакомьтесь со статьей Расширенные настройки.

Список разрешенных HTTP-серверов

С помощью этих команд системный администратор может настроить и поддерживать список из десяти разрешенных HTTP-серверов (хостов):

  • xCommand HttpClient Allow Hostname Add Expression:

  • Кскомманд Хттпклиент разрешить очистку имени хоста

  • Кскомманд Хттпклиент разрешить список имен хостов

  • xCommand HttpClient Allow Hostname Remove Id:

Если список содержит записи сервера, вы можете отправлять запросы HTTP(S) только на эти серверы. Однако, если список пуст, вы можете отправлять запросы на любой сервер HTTP(S).

Проверка в списке разрешенных серверов выполняется как при использовании небезопасной передачи данных (HTTP) и безопасной (HTTPS) передачи данных.

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

При отправке запросов через HTTPS устройство проверяет сертификат сервера HTTPS по умолчанию. Если сертификат сервера HTTPS не найден действительным, вы получите сообщение об ошибке. Устройство не отправляет какие-либо данные на этот сервер.

Рекомендуется использовать HTTPS с проверкой сертификата. Если проверка сертификата невозможна, системный администратор может установить для параметра HttpClient > AllowInsecureHTTPS значение On ( xConfiguration HttpClient AllowInsecureHTTPS: Вкл. . Это позволяет использовать HTTPS без проверки сертификата сервера.

Отправка запросов HTTP(S)

После включения функции запроса клиента HTTP(S) можно использовать следующие команды для отправки запросов на сервер HTTP(S). Post , Put , Patch , Get или Delete .

  • xCommand HttpClient [AllowInsecureHTTPS: ] [Заголовок: ] [ResponseSizeLimit: ] [ResultBody: ] [Timeout: ] Url:

Добавление полей заголовка является необязательным. Можно добавить до 20 полей.

Параметр AllowInsecureHTTPS действует только в том случае, если системный администратор разрешил использование HTTPS без проверки сертификата сервера. В этом случае можно отправить данные на сервер без проверки сертификата сервера, если для параметра установлено значение True . Если параметр не выбран или для него установлено значение False (Ложь), данные не отправляются в случае сбоя проверки сертификата.

Параметр ResposenSizeLimit представляет собой максимальный размер полезной нагрузки (в байтах), принимаемый устройством в качестве ответа от сервера. Если полезное значение ответа превышает максимально допустимый размер, команда возвращает ошибку состояния. В сообщении об ошибке говорится о превышении максимального размера файла. Однако это не влияет на серверную сторону; сервер получил и обработал запрос надлежащим образом.

Используйте параметр ResultBody , чтобы определить, как отформатировать тело ответа HTTP от сервера в результате выполнения команды. У вас есть три варианта:

  • Нет : Не включайте тело HTTP-ответа в результате выполнения команды.

  • Base64: Base64 кодирует тело, прежде чем включить его в результат.

  • Обычный текст : Включить тело в результат в виде обычного текста. Если ответ содержит непечатаемые буквы, команда возвращает ошибку состояния с сообщением о том, что не обнаружены непечатаемые данные.

Используйте параметр Timeout (Время ожидания), чтобы задать период ожидания (в секундах). Если в течение этого периода запрос не был выполнен, API возвращает ошибку.

Введите полезное грузить (данные) сразу же после выдачи команды. Все введите, включая разрывы строк, является частью полезной нагрузки. Завершив разрыв строки ("\n") и отдельную строку, содержащую всего один период, после чего следует разрыв строки (".\n"). Теперь команда выполняется, и данные отправляются на сервер.

Примеры

В обоих примерах текст сообщения – JSON. Это может быть любой формат, в зависимости от ожидаемого формата службы, которая получает сообщения.

Пример 1. Управление устройством IoT с помощью HTTP Post

Это функция макроса, которая включает световой день, подключенный к мосту Хьюса.

 функция hue_command(data) { var url = 'http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state'; var headers = 'Content-Type: Application/JSON "; Команда ДИСП = "{" on ": true}"; ксапи. Command ("Хттпклиент PUT", {"URL": URL-адрес "заголовок": Headers}, Command); } 

Вы можете сделать то же, что и в командной строке, с помощью API:

 xcommand HttpClient Put Header: "Content-Type: URL приложения/json: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} . 

Пример 2. Публикация данных в инструменте мониторинга с помощью HTTP Post

 xcommand HttpClient Post Header: "Content-Type: URL-адрес приложения/json": "https://mymonitoringserver.com/service/devicemonitoring" {"Сообщение":"пользователь сообщил о проблеме с этой системой","systemName":"BoardRoom 4th floor","softwareVersion":"ce9.6.0","softwareReleaseDate":"2018-12-13","videoMonitors":"Dual"}. 

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

Узнайте больше о том, как использовать запросы HTTP-клиентов в руководстве по настройке . Выберите последнюю версию.

Поддержка Cisco (TAC) не поддерживает отладку кода третьих сторон, включая макроки. Проверьте, https://roomos.cisco.com требуется ли помощь с макросами и сторонним кодом.