Con las macros, puede enviar datos a un servidor HTTP siempre que lo necesite. Usted tiene control sobre qué datos se envían y cómo se organizan, lo que simplifica la adaptación de los datos para su uso con los servicios existentes.
Medidas de seguridad:
-
La característica de solicitud de cliente HTTP está deshabilitada de forma predeterminada. Un administrador del sistema debe activar explícitamente la función estableciendo HttpClient On ( xConfiguration HttpClient Mode: On
). -
El administrador del sistema puede impedir el uso de HTTP estableciendo en False (
xConfiguration HttpClient AllowHTTP: False). -
El administrador del sistema puede especificar una lista de servidores HTTP a los que el dispositivo puede enviar datos. (Consulte los
comandos xCommand HttpClient Allow Hostname.) -
El número de solicitudes HTTP simultáneas es limitado.
Las configuraciones a las que se hace referencia en este artículo están disponibles tanto desde la interfaz web del dispositivo como en el API. Los comandos están disponibles a través del API. Lea el artículo Configuración avanzada para obtener información sobre cómo acceder a la interfaz web y usar el API.
Lista de servidores HTTP 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: <Expresión regular que coincide con el nombre de host o la dirección IP del servidor HTTP> -
xCommand HttpClient Permitir borrar nombre de host -
xCommand HttpClient Permitir lista de nombres de host -
xCommand HttpClient Permitir nombre de host Eliminar ID: <ID de una entrada de la lista>
Si la lista contiene entradas de servidor, sólo puede enviar solicitudes HTTP a esos servidores. Sin embargo, si la lista está vacía, puede enviar solicitudes a cualquier servidor HTTP.
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
Al enviar solicitudes a través de HTTPS, el dispositivo comprueba el certificado del servidor HTTPS de forma predeterminada. Si el certificado de servidor HTTPS no se encuentra válido, recibirá un mensaje de error. El dispositivo no envía ningún dato a ese servidor.
Se recomienda usar HTTPS con la validación de certificados. Si la validación del certificado no es posible, el administrador del sistema puede establecer HttpClient On ( xConfiguration HttpClient AllowInsecureHTTPS: On ). Esto permite el uso de HTTPS sin validar el certificado del servidor.
Envío de solicitudes HTTP
Una vez habilitada la característica de solicitud de cliente HTTPs, puede utilizar los siguientes comandos para enviar solicitudes a un servidor HTTPs. <method> is POST , PUT,Patch,Get o Delete.
-
xCommand HttpClient <Método> [AllowInsecureHTTPS: <True/False>] [Encabezado: <Texto del encabezado>] [ResponseSizeLimit: <Tamaño máximo de respuesta>] [ResultBody: <None/PlainText/Base64>] [Tiempo de espera: <período de tiempo de espera>] Url: <URL a la que enviar la solicitud>
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 se produce un error en 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 indica 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 dar formato al cuerpo de la respuesta HTTP del servidor en el resultado del comando. Tienes tres opciones:
-
Ninguno: no incluya el cuerpo de la respuesta HTTP en el resultado del comando. -
Base64: Base64 codifica el cuerpo antes de incluirlo en el resultado. -
Texto sinformato: 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 Tiempo de espera para establecer un período de tiempo de espera (segundos). Si la solicitud no se completa durante este período, el API devuelve un error.
Ingrese la carga útil (datos) directamente después de haber emitido el comando. Todo lo que introduzca, incluidos los saltos de línea, forma parte de la carga útil. Cuando haya terminado, 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. Puede ser cualquier formato, dependiendo del formato esperado del servicio que está recibiendo 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 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); }
Puede hacer lo mismo en la línea de comandos usando 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: Publicar 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":"Un usuario informó de 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 sobre cómo usar las solicitudes de cliente HTTP en la Guía de personalización. Elija la versión más reciente.
Cisco support (TAC) no admite la depuración de código de terceros, incluidas las macros. Marque # https://roomos.cisco.com si necesita ayuda con macros y código de terceros.