Con le macro, è possibile inviare dati a un server HTTP ogni volta che è necessario. Hai il controllo su quali dati vengono inviati e su come sono organizzati, semplificando l'adattamento dei dati per l'uso con i servizi esistenti.
Misure di sicurezza:
-
La funzione di richiesta client HTTP è disabilitata per impostazione predefinita. Un amministratore di sistema deve abilitare in modo esplicito la funzione impostando su On (
xConfiguration HttpClient Mode: On). -
L'amministratore di sistema può impedire l'utilizzo di HTTP impostando HttpClient False ( xConfiguration HttpClient AllowHTTP: False
). -
L'amministratore di sistema può specificare un elenco di server HTTP a cui il dispositivo può inviare dati. Vedere i
comandi xCommand HttpClient Allow Hostname. -
Il numero di richieste HTTP simultanee è limitato.
Le configurazioni di cui in questo articolo sono disponibili sia dall'interfaccia web del dispositivo che nel API. I comandi sono disponibili tramite API. Leggi l'articolo Impostazioni avanzate per informazioni su come accedere all'interfaccia Web e utilizzare API.
Elenco dei server HTTP consentiti
L'amministratore di sistema può utilizzare questi comandi per impostare e gestire un elenco di un massimo di dieci server HTTP consentiti (host):
-
xCommand HttpClient Allow Hostname Add Expression: <Espressione regolare che corrisponde al nome host o all'indirizzo IP del server HTTP> -
xCommand HttpClient Consenti cancellazione nome host -
xCommand HttpClient Consenti elenco nomi host -
xCommand HttpClient Allow Hostname Remove ID: <ID di una voce nell'elenco>
Se l'elenco contiene voci di server, è possibile inviare richieste HTTP solo a tali server. Tuttavia, se l'elenco è vuoto, è possibile inviare richieste a qualsiasi server HTTP.
Il controllo rispetto all'elenco dei server consentiti viene eseguito sia quando si utilizza il trasferimento non sicuro (HTTP) che sicuro (HTTPS) dei dati.
HTTPS senza convalida del certificato
Quando si inviano richieste su HTTPS, il dispositivo controlla il certificato del server HTTPS per impostazione predefinita. Se il certificato del server HTTPS non risulta valido, viene visualizzato un messaggio di errore. Il dispositivo non invia alcun dato a tale server.
Si consiglia di utilizzare HTTPS con la convalida del certificato. Se la convalida del certificato non è possibile, l'amministratore di sistema può impostare HttpClient On ( xConfiguration HttpClient AllowInsecureHTTPS: On ). Ciò consente l'uso di HTTPS senza convalidare il certificato del server.
Invio di richieste HTTP
Una volta abilitata la funzionalità di richiesta client HTTP, è possibile utilizzare i seguenti comandi per inviare richieste a un server HTTP. <method> is either POST , PUT,Patch,Get o Delete.
-
xCommand HttpClient <Method> [AllowInsecureHTTPS: <True/False>] [Intestazione: <testo dell'intestazione>] [ResponseSizeLimit: <Dimensione massima della risposta>] [ResultBody: <None/PlainText/Base64>] [Timeout: <Periodo di timeout>] URL: <URL a cui inviare la richiesta>
L'aggiunta di campi di intestazione è facoltativa ed è possibile aggiungere fino a 20 campi.
Il parametro AllowInsecureHTTPS ha effetto solo se l'amministratore di sistema ha consentito l'utilizzo di HTTPS senza convalidare il certificato del server. In questo caso, è possibile inviare dati al server senza convalidare il certificato del server se il parametro è impostato su True . Se si omette il parametro o lo si imposta su False , i dati non vengono inviati se la convalida del certificato non riesce.
Il parametro ResposenSizeLimit è la dimensione massima del payload (byte) che il dispositivo accetta come risposta dal server. Se il payload della risposta è maggiore di questa dimensione massima, il comando restituisce un errore di stato. Il messaggio di errore indica che è stata superata la dimensione massima del file. Tuttavia, questo non ha alcun effetto sul lato server; Il server ha ricevuto ed elaborato correttamente la richiesta.
Utilizzare il parametro ResultBody per decidere come formattare il corpo della risposta HTTP dal server nel risultato del comando. Sono disponibili tre opzioni:
-
Nessuno: non includere il corpo della risposta HTTP nel risultato del comando. -
Base64: Base64 codifica il corpo prima di includerlo nel risultato. -
PlainText: includere il corpo del risultato come testo normale. Se la risposta contiene lettere non stampabili, il comando restituisce un errore di stato con un messaggio che indica che sono stati rilevati dati non stampabili.
Utilizzare il parametro Timeout per impostare un periodo di timeout (secondi). Se la richiesta non viene completata durante questo periodo, il API restituisce un errore.
Immettere il payload (dati) direttamente dopo aver emesso il comando. Tutto ciò che immetti, incluse le interruzioni di riga, fa parte del payload. Al termine, terminare con un'interruzione di riga ("\n") e una riga separata contenente solo un punto seguito da un'interruzione di riga (".\n"). Ora il comando viene eseguito e i dati vengono inviati al server.
Esempi
Il corpo del messaggio è JSON in entrambi questi esempi. Potrebbe essere qualsiasi formato, a seconda del formato previsto del servizio che riceve i messaggi.
Esempio 1: controllo dei dispositivi IoT tramite HTTP POST
Ecco una funzione macro che accende una luce collegata 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); }
Puoi fare lo stesso dalla riga di comando usando API:
xcommand HttpClient PUT Header: "Content-Type: application/json" URL: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} .
Esempio 2: invio di dati a uno strumento di monitoraggio utilizzando HTTP POST
xcommand HttpClient POST Header: "Content-Type: application/json" URL: "https://mymonitoringserver.com/service/devicemonitoring" {"Message":"Un utente ha segnalato un problema con questo sistema","systemName":"BoardRoom 4th floor","softwareVersion":"ce9.6.0","softwareReleaseDate":"2018-12-13","videoMonitors":"Dual"} .
Ulteriori informazioni
Per ulteriori informazioni su come utilizzare le richieste client HTTP, vedere la Guida alla personalizzazione . Scegli l'ultima versione.
Cisco supporto (TAC) non supporta il debug di codice di terze parti, incluse le macro. Si prega di controllare https://roomos.cisco.com se hai bisogno di aiuto con macro e codice di terze parti.