Используя макросы, можно отправлять данные на сервер HTTP в любое время. Можно выбрать отправляемые данные и структурировать их по мере настройки. Таким образом можно адаптировать данные к уже установленной службе.

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

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

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

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

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

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

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

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

  • 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>

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

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

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

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

  • None : не включать тело ответа HTTP в результат команды.

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

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

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

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

Примеры

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

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

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


     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 для совместной работы, если вам необходима помощь в работе с макросами и кодами сторонних разработчиков. Кроме того, на этом сайте имеется большое количество ресурсов для разработчиков и интеграторов.