Con las macros, puede enviar datos a un servidor HTTP(S) cuando lo necesite. Usted tiene control sobre qué datos se envían y cómo se organizan, lo que facilita la adaptación de los datos para su uso con los servicios existentes.
Medidas de seguridad:
-
La característica de solicitud de cliente HTTP(S) está deshabilitada de manera predeterminada. Un administrador del sistema debe habilitar explícitamente la característica estableciendo
en Activado (xConfiguration HttpClient Mode: El
). -
El administrador del sistema puede evitar el uso de HTTP si configura
en False (xConfiguration HttpClient AllowHTTP: Falso
). -
El administrador del sistema puede especificar una lista de servidores HTTP(S) a los que el dispositivo puede enviar datos. (Consulte los comandos
xCommand HttpClient Allow Host Name
). -
La cantidad de solicitudes HTTP(S) concurrentes es limitada.
Las configuraciones a las que se hace referencia en este artículo están disponibles tanto en la interfaz web del dispositivo como en la API. Los comandos están disponibles a través de la API. Lea el artículo Configuración avanzada para obtener información sobre cómo acceder a la interfaz web y cómo usar la API.
Lista de servidores HTTP(S) permitidos
El administrador del sistema puede utilizar estos comandos para configurar y mantener una lista de hasta diez servidores HTTP (hosts) permitidos:
-
xCommand HttpClient Allow Hostname Add Expression:
-
Comando HttpClient permitir el nombre de host borrar
-
Lista de nombres de host de comando HttpClient allow
-
xCommand HttpClient Allow Hostname Remove Id:
Si la lista contiene entradas de servidor, solo puede enviar solicitudes HTTP(S) a esos servidores. Sin embargo, si la lista está vacía, puede enviar solicitudes a cualquier servidor HTTP(S).
La comprobación con la lista de servidores permitidos se realiza tanto cuando se utiliza una transferencia de datos insegura (HTTP) como segura (HTTPS).
HTTPS sin validación de certificado
Cuando envía solicitudes a través de HTTPS, el dispositivo comprueba el certificado del servidor HTTPS de manera predeterminada. Si no se encuentra que el certificado del servidor HTTPS sea válido, recibe un mensaje de error. El dispositivo no envía ningún dato a ese servidor.
Le recomendamos utilizar HTTPS con validación de certificados. Si no es posible validar el certificado, el administrador del sistema puede configurar xConfiguration HttpClient AllowInsecureHTTPS: El
). Esto permite el uso de HTTPS sin validar el certificado del servidor.
Envío de solicitudes HTTP(S)
Una vez habilitada la característica de solicitud de cliente HTTP(S), puede utilizar los siguientes comandos para enviar solicitudes a un servidor HTTP(S).
puede ser Post
, Put
, Patch
, Get
o Delete
.
-
xCommand HttpClient [AllowInsecureHTTPS: ] [Header: ] [ResponseSizeLimit: ] [ResultBody: ] [Timeout: ] Url:
La adición de campos de encabezado es opcional y puede agregar hasta 20 campos.
El parámetro AllowInsecureHTTPS
tiene un efecto solo si el administrador del sistema ha permitido el uso de HTTPS sin validar el certificado del servidor. Si es así, puede enviar datos al servidor sin validar el certificado del servidor si el parámetro está configurado en Verdadero
. Si deja fuera el parámetro, o lo establece en Falso
, los datos no se envían si la validación del certificado falla.
El parámetro ResposenSizeLimit
es el tamaño máximo de carga útil (bytes) que el dispositivo acepta como respuesta del servidor. Si la carga de la respuesta es mayor a este tamaño máximo, el comando devuelve un error de estado. El mensaje de error dice que se excedió el tamaño máximo del archivo. Sin embargo, esto no tiene ningún efecto en el lado del servidor; el servidor ha recibido y procesado la solicitud correctamente.
Utilice el parámetro ResultBody
para decidir cómo dar formato al cuerpo de la respuesta HTTP del servidor en el resultado del comando. Tiene tres opciones:
-
Ninguno
: No incluya el cuerpo de la respuesta HTTP en el resultado del comando. -
Base64
: Codifique en Base64 el cuerpo antes de incluirlo en el resultado. -
Texto sin formato
: Incluir el cuerpo en el resultado como texto sin formato. Si la respuesta contiene letras que no se imprimirán, el comando devuelve un error de estado con un mensaje que indica que se encontraron datos no imprimibles.
Utilice el parámetro Tiempo de espera
para establecer un período de tiempo de espera (segundos). Si la solicitud no se completa durante este período, la API devuelve un error.
Introduzca la carga (datos) inmediatamente después de haber emitido el comando. Todo lo que introduzca, incluso saltos de línea, es parte de la carga. Cuando haya terminado, termine con una salto de línea ("\n") y una línea independiente que contenga sólo un período seguido de una interrupción de línea (".\n"). Ahora se ejecuta el comando y los datos se envían al servidor.
Ejemplos
El cuerpo del mensaje es JSON en estos dos ejemplos. Podría ser cualquier formato, según el formato esperado del servicio que esté recibiendo los mensajes.
Ejemplo 1: Control de dispositivos de IoT mediante HTTP Post
A continuación, se ofrece una función macro que enciende una luz que está conectada a un puente de Philips Jueves:
función hue_command(datos) { var url = 'http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state'; var headers = 'Tipo de contenido: aplicación/JSON '; comando var = ' {"ON": true} '; XAPI. Command (' HttpClient Put ', {' URL ': URL, ' header ': encabezados}, comando); }
Puede hacer lo mismo en la línea de comandos utilizando la API:
xcommand HttpClient Put Header: "Content-Type: URL de la aplicación/json: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} .
Ejemplo 2: Publicar datos en una herramienta de monitoreo utilizando HTTP Post
xcommand HttpClient Post Header: "Content-Type: application/json" URL: "https://mymonitoringserver.com/service/devicemonitoring" {"Message":"Un usuario informó un problema con este sistema","systemName":"BoardRoom 4th floor","softwareVersion":"ce9.6.0","softwareReleaseDate":"2018-12-13","videoMonitors":"Dual"} .
Más información
Encontrará más detalles acerca de cómo utilizar las solicitudes de cliente HTTP en la guía de personalización . Elija la versión más reciente.
El soporte de Cisco (TAC) no admite la depuración de código de terceros, incluidas las macros. Compruebe https://roomos.cisco.com si necesita ayuda con el código de macros y de terceros.