Si utiliza macros, puede enviar datos a un servidor HTTPS cuando lo desee. Puede elegir los datos que desea enviar y estructurarlos como desee. Si lo hace de esta forma, puede adaptar los datos a un servicio que ya esté establecido.

Medidas de seguridad:

  • La función de solicitud de cliente HTTP(S) está desactivada por defecto. Un administrador del sistema debe activar la función de manera explícita mediante la configuración de HttpClient > Mode (Modo de cliente HTTP) como On (Encendido) (xConfiguration HttpClient Mode: On).

  • El administrador del sistema puede evitar el uso de HTTP si configura HttpClient > AllowHTTP (Cliente HTTP, Permitir HTTP) como False (Falso) (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 opciones de configuración a las que se hace referencia en este artículo están disponibles en la interfaz web del dispositivo y en la API. Los comandos están disponibles en la API. Lea el artículo sobre la configuración avanzada para obtener información sobre cómo acceder a la interfaz de 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 no está vacía, puede enviar solicitudes HTTP(S) solamente a los servidores de la lista. Si la lista está vacía, puede enviar las solicitudes a cualquier servidor HTTP(S).

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 no es posible validar el certificado, el administrador del sistema puede configurar HttpClient > AllowInsecureHTTPS (Permitir HTTPS inseguro de cliente HTTP) como On (Encendido) (xConfiguration HttpClient AllowInsecureHTTPS: On). Esto permite el uso de HTTPS sin validar el certificado del servidor.

Envío de solicitudes HTTP(S)

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 <Method> [AllowInsecureHTTPS: <True/False>] (Permitir HTTPS inseguro) [Header: <Header text>] (Encabezado) [ResponseSizeLimit: <Maximum response size>] (Límite de tamaño de respuesta) [ResultBody: <None/PlainText/Base64>] (Cuerpo de resultado) [Timeout: <Timeout period>] (Tiempo de espera) Url: <URL to send the request to>

La adición de campos de encabezado es optativa, pero 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":"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

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. Si necesita ayuda con el código de las macros y de terceros, consulte la comunidad de Cisco Collaboration Developer. Además, existen muchos recursos de integradores y desarrolladores en este sitio.