Esta función permite que los dispositivos de la serie de juntas, escritorios o salas inicien y reciban solicitudes HTTP con un servidor HTTP. Estos dispositivos admiten métodos como Post, Put, Patch, Get y Delete, lo que permite diferentes interacciones con el servidor.
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 función de solicitud de cliente HTTP(S) está desactivada por defecto. 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 HTTPS a los que el dispositivo puede enviar datos. Consulta los comandos
xCommand HttpClient Allow Hostname
(Comando Cliente HTTP permitir nombre de host). -
La cantidad de HTTP(S) en simultáneo 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 el API. Los comandos están disponibles a través del API. Lea el artículo sobre la configuración avanzada para obtener información sobre cómo acceder a la interfaz web y utilizar 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(S) permitidos (hosts):
-
xCommand HttpClient Allow Hostname Add Expression (Agregar expresión Comando Cliente HTTP permitir nombre de host): <Expresión regular que coincide con el nombre del host o la dirección IP del servidor HTTP(S)>
-
xCommand HttpClient Allow Hostname Clear (Borrar Comando Cliente HTTP permitir nombre de host)
-
xCommand HttpClient Allow Hostname List (Lista Comando Cliente HTTP permitir nombre de host)
-
xCommand HttpClient Allow Hostname Remove Id (Borrar ID Comando Cliente HTTP permitir nombre de host): <ID de una entrada en 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 en la lista de servidores permitidos se realiza cuando se usa la transferencia de datos no segura (HTTP) y segura (HTTPS).
HTTPS sin validación de certificado
Cuando envía solicitudes por HTTPS, el dispositivo comprueba el certificado del servidor HTTPS de forma predeterminada. Si el certificado del servidor HTTPS no es válido, aparece un mensaje de error. El dispositivo no envía datos a ese servidor.
Se recomienda usar HTTPS con validación de certificado. Si la validación del certificado no es posible, el administrador del sistema puede establecer HttpClient ).
Esto permite el uso de HTTPS sin validar el certificado del servidor.
Envío de solicitudes HTTP
Una vez que la función de solicitud del cliente HTTP(S) está activada, puede utilizar los siguientes comandos para enviar solicitudes a un servidor HTTP(S). <method>
(método) puede ser Post
(Publicar), Put
(Colocar), Patch
(Reparar), Get
(Obtener) o Delete
(Borrar).
-
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 surte 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á configurado como True
(Verdadero). Si omite el parámetro, o lo configura como False
(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 (bytes) que el dispositivo acepta como respuesta del servidor. Si la carga de respuesta es mayor que este tamaño máximo, el comando muestra un error de estado. El mensaje de error indica que se ha superado 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:
-
None
(Ninguno): No incluir el cuerpo de la respuesta HTTP en el resultado del comando. -
Base64
: Base64 codifica el cuerpo antes de incluirlo en el resultado. -
PlainText
(Texto sin formato): Incluir 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 han encontrado datos no imprimibles.
Utilice el parámetro Timeout
para establecer el tiempo de espera (segundos). Si la solicitud no finaliza durante este período, la API devuelve un error.
Ingrese la carga (datos) directamente después de que haya emitido el comando. Todo lo que introduzca es parte de la carga, incluidos los saltos de línea. Cuando termine, acabe con un salto de línea (“\n”) y una línea separada que contenga sólo 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 estos dos ejemplos. Puede ser cualquier formato, según el formato esperado del servicio que recibe los mensajes.
Ejemplo 1: Control de dispositivo IoT mediante HTTP Post
Esta es una función macro que activa 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 mediante 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 a 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
Obtenga más información sobre cómo usar solicitudes de cliente HTTP en la guía de personalización. Seleccione la versión más reciente.
La asistencia de Cisco (TAC) no admite la depuración de código de terceros, incluyendo las macros. Marque # https://roomos.cisco.com si necesita ayuda con macros y código de terceros.