Con macros, puede enviar datos a un servidor HTTP (S) siempre que lo necesite. 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 función de solicitud de cliente HTTP (S) está deshabilitada de forma predeterminada. Un administrador del sistema debe habilitar explícitamente la función configurando en Activado (
XConfiguration HttpClient Mode:Activado). -
El administrador del sistema puede evitar el uso de HTTP configurando : False).
-
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 Permitir nombre de host.) -
El número de solicitudes HTTP (S) simultáneas es limitado.
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 usar la API.
Lista de servidores HTTP (S) permitidos
El administrador del sistema puede usar estos comandos para configurar y mantener una lista de hasta diez servidores HTTP (S) permitidos (hosts):
-
XCommand HttpClient Permitir nombre de host agregar expresión:<Regular expression that matches the host name or IP address of the HTTP (S) server> -
XCommand HttpClient Permitir nombre de host Borrar -
XCommand HttpClient Permitir lista de nombres de host -
XCommand HttpClient Permitir nombre de host eliminar ID:<id of an entry in the list>
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 de 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
Al enviar solicitudes a través de HTTPS, el dispositivo comprueba el certificado del servidor HTTPS de forma predeterminada. Si no se encuentra válido el certificado del servidor HTTPS, recibirá un mensaje de error. El dispositivo no envía ningún dato a ese servidor.
Recomendamos usar HTTPS con validación de certificado. Si la validación del certificado no es posible, el administrador del sistema puede establecer : On). Esto permite el uso de HTTPS sin validar el certificado del servidor.
Envío de solicitudes HTTP (S)
Una vez habilitada la función de solicitud de cliente HTTP (S), puede usar los siguientes comandos para enviar solicitudes a un servidor HTTP (S).
<method>es
publicar
,
poner
,
parchar
,
obtener o
eliminar
.
-
xCommand HttpClient [AllowInSecureHttps:] [Encabezado:] [ResponseSizeLimit:] [ResultBody:] [Tiempo de espera:] URL:<Method><True/False> <Header text><Maximum response size><None/PlainText/Base64> <Timeout period><URL to send the request to>
Agregar campos de encabezado es opcional y puede agregar hasta 20 campos.
El
parámetro
AllowInSecureHTTPS sólo tiene efecto 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á establecido en
True
. Si omite el parámetro o lo establece en
False
, los datos no se envían si falla la validación del certificado.
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 útil de respuesta es mayor que este tamaño máximo, el comando devuelve un error de estado. El mensaje de error dice que se ha excedido el tamaño máximo de 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 formatear el 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: Base64 codificó el cuerpo antes de incluirlo en el resultado. -
PlainText: Incluya el cuerpo en el resultado como texto sin formato. Si la respuesta contiene letras no imprimibles, el comando devuelve un error de estado con un mensaje que indica que se encontraron datos no imprimibles.
Utilice el
parámetro
Timeout 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 útil (datos) inmediatamente después de haber emitido el comando. Cualquier cosa que ingrese, incluidos los saltos de línea, es parte de la carga útil. Cuando termine, termine con un salto de línea (“\n”) y una línea separada que contenga solo un punto seguido de un salto 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 ambos ejemplos. Podría ser cualquier formato, dependiendo del formato esperado del servicio que recibe los mensajes.
Ejemplo 1: Control de dispositivos IoT mediante HTTP Post
Aquí hay una función macro que enciende una luz que está conectada a un puente Philips Hue:
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); }
Puede hacer lo mismo en la línea de comandos usando la API:
xcommand HttpClient Put Header: "Content-Type: application/json" URL: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} .
Ejemplo 2: Publicación de datos en una herramienta de supervisión mediante 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"} .
Más información
Encuentre más detalles sobre cómo usar las solicitudes de clientes HTTP en la guía de personalización . Elija la última versión.
El soporte de Cisco (TAC) no admite la depuración de código de terceros, incluidas las macros. Por favor, consulte https://roomos.cisco.com si necesita ayuda con macros y código de terceros.