Esta característica permite enviar solicitudes HTTP(S) arbitrarios desde un dispositivo de board, sala o escritorio a un servidor HTTP(S). Además, el dispositivo recibe la respuesta que el servidor envía de nuevo. El dispositivo admite los métodos Publicar, Colocar, Revisión, Obtener y Eliminar.
Al usar macros, puede enviar datos a un servidor HTTP(S) cada vez que lo desee. Puede elegir los datos que desea enviar y estructurarlos como quiera. Si lo hace de esta manera, puede adaptar los datos a un servicio ya establecido.
Medidas de seguridad:
La característica de solicitud de cliente HTTP(S) está deshabilitada de manera predeterminada. Un administrador del sistema debe habilitar explícitamente la característica configurando
en On (xConfiguration HttpClient Mode: On
).El administrador del sistema puede impedir el uso de HTTP configurando
a False (xConfiguration HttpClient AllowHTTP: False
).El administrador del sistema puede especificar una lista de servidores HTTP(S) a los que el dispositivo puede enviar datos. (Consulte la
xCommand HttpClient Allow Hostname
los comandos).La cantidad de solicitudes HTTP(S) concurrentes es limitada.
Las configuraciones a las que se hace referencia en este artículo están disponibles tanto desde la interfaz web del dispositivo como en la API. Los comandos están disponibles en la API. Lea el artículo Configuración avanzada para obtener información sobre cómo acceder a la interfaz web y cómo usar 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 (hosts) permitidos:
xCommand HttpClient Allow Hostname Add Expression: <Regular expression that matches the host name or IP address of the HTTP(S) server>
xCommand HttpClient Allow Hostname Clear
xCommand HttpClient Allow Hostname List
xCommand HttpClient Allow Hostname Remove Id: <id of an entry in the list>
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 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
Cuando envía solicitudes a través de HTTPS, el dispositivo comprueba el certificado del servidor HTTPS de manera predeterminada. Si no se encuentra que el certificado del servidor HTTPS sea válido, recibe un mensaje de error. El dispositivo no envía ningún dato a ese servidor.
Le recomendamos utilizar HTTPS con validación de certificados. Si la validación de certificados no es posible,
xConfiguration HttpClient AllowInsecureHTTPS: On
). Esto permite el uso de HTTPS sin validar el certificado del servidor.
Enviar solicitudes HTTP(S)
Una vez habilitada la característica de solicitud de cliente HTTP(S), puede utilizar los siguientes comandos para enviar solicitudes a un servidor HTTP(S).
<method>
ya sea
Post
,
Put
,
Patch
,
Get
, o
Delete
.
xCommand HttpClient <Method> [AllowInsecureHTTPS: <True/False>] [Header: <Header text>] [ResponseSizeLimit: <Maximum response size>] [ResultBody: <None/PlainText/Base64>] [Timeout: <Timeout period>] Url: <URL to send the request to>
Agregar campos de encabezado es opcional, pero puede agregar hasta 20 campos.
El mensaje
AllowInsecureHTTPS
el parámetro tiene un efecto solamente 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 en
True
. Si sale del parámetro o lo configura en
False
, los datos no se envían si falla la validación del certificado.
El mensaje
ResposenSizeLimit
el parámetro es el tamaño de carga máxima (bytes) que el dispositivo acepta como respuesta del servidor. Si la carga de la respuesta es mayor a este tamaño máximo, el comando devuelve un error de estado. El mensaje de error dice que se excedió 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 la flecha
ResultBody
parámetro para decidir cómo dar formato al cuerpo de la respuesta HTTP del servidor en el resultado del comando. Tiene tres opciones:
None
: No incluya el cuerpo de la respuesta HTTP en el resultado del comando.Base64
: Base64 codifica el cuerpo antes de incluirlo en el resultado.PlainText
: Incluya el cuerpo en el resultado como texto sin formato. Si la respuesta contiene letras que no pueden imprimirse, el comando devuelve un error de estado con un mensaje que indica que se encontraron datos que no se imprimiron.
Utilice la flecha
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 (datos) inmediatamente después de haber emitido el comando. Todo lo que introduzca, incluso saltos de línea, es parte de la carga. Cuando haya terminado, termine con una salto de línea ("\n") y una línea independiente que contenga sólo un período seguido de una interrupción 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. Podría ser cualquier formato, según el formato esperado del servicio que esté recibiendo los mensajes.
Ejemplo 1: Control de dispositivos de IoT mediante HTTP Post
A continuación, se ofrece una función macro que enciende una luz que está conectada a un puente de Philips Jueves:
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: Publicar datos en una herramienta de monitoreo utilizando 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
Encontrará más detalles acerca de cómo utilizar las solicitudes de cliente HTTP en la guía de personalización . Elija la versión más reciente.
El soporte de Cisco (TAC) no admite la depuración de código de terceros, incluidas las macros. Consulte la comunidad de desarrolladores de Cisco Collaboration si necesita ayuda con macros y códigos de terceros. Además, hay muchos recursos de desarrolladores e integradores en este sitio.