Con las macros, puede enviar datos a un servidor HTTP cuando 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 habilitar explícitamente la función configurando HttpClient > Mode en . Activado ( modo xConfiguration HttpClient: activado ).

  • El administrador del sistema puede impedir el uso de HTTP configurando HttpClient > AllowHTTP en Falso ( xConfiguration HttpClient AllowHTTP: Falso ).

  • 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 refiere 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 de 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 servidores, solo 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 configurar HttpClient > AllowInsecureHTTPS en Activado ( xConfiguration HttpClient AllowInsecureHTTPS: Activado ). 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: <Verdadero/Falso>] [Encabezado: <Texto del encabezado>] [ResponseSizeLimit: <Tamaño máximo de respuesta>] [ResultBody: <Ninguno/Texto plano/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:

 función hue_command(datos) { var url = 'http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state'; encabezados var = 'Tipo de contenido: aplicación/json'; comando var = '{"on":true}'; xapi.command('HttpClient Put', { 'Url': url, 'Encabezado': encabezados }, comando); } 

Puede hacer lo mismo en la línea de comandos mediante la API:

 xcommand HttpClient Poner encabezado: "Tipo de contenido: aplicación/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

 Encabezado de publicación de xcommand HttpClient: "Tipo de contenido: aplicación/json" URL: "https://mymonitoringserver.com/service/devicemonitoring" {"Message":"Un usuario informó un problema con este sistema","systemName":"BoardRoom 4.° piso","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. Consulte https://roomos.cisco.com si necesita ayuda con macros y código de terceros.