Con le macro, è possibile inviare i dati a un server HTTP(S) ogni volta che necessario. Hai il controllo su quali dati vengono inviati e come sono organizzati, rendendo semplice adattare i dati per l'uso con i servizi esistenti.

Misure di sicurezza:

  • La funzione di richiesta del client HTTP(S) è disabilitata per impostazione predefinita. Un amministratore di sistema deve abilitare in modo esplicito la funzione impostando HttpClient > Modalità su Attivata ( xConfiguration HttpClient Mode: Il ).

  • L'amministratore di sistema può impedire l'uso del protocollo HTTP impostando HttpClient > AllowHTTP su False ( xConfiguration HttpClient AllowHTTP: Falso ).

  • L'amministratore del 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(S) concorrenti è limitato.

Le configurazioni di cui a questo articolo sono disponibili sia dall'interfaccia Web del dispositivo sia nell'API. I comandi sono disponibili tramite l'API. Leggere l'articolo Impostazioni avanzate per informazioni su come accedere all'interfaccia Web e utilizzare l'API.

Elenco di server HTTP(S) consentiti

L'amministratore del sistema può utilizzare questi comandi per impostare e gestire un elenco di massimo 10 server HTTP(S) consentiti (host):

  • Espressione aggiunta nome host xCommand HttpClient:

  • xCommand HttpClient Consenti nome host chiaro

  • xCommand HttpClient Consenti elenco nomi host

  • xCommand HttpClient Consenti nome host Remove Id:

Se l'elenco contiene voci del server, è possibile inviare solo richieste HTTP(S) a tali server. Tuttavia, se l'elenco è vuoto, è possibile inviare richieste a qualsiasi server HTTP(S).

Il controllo in base all'elenco di server consentiti viene eseguito sia quando si utilizza il trasferimento di dati non sicuro (HTTP) che sicuro (HTTPS).

HTTPS senza convalida del certificato

Quando si inviano richieste su HTTPS, il dispositivo controlla per impostazione predefinita il certificato del server HTTPS. Se il certificato del server HTTPS non è valido, viene visualizzato un messaggio di errore. Il dispositivo non invia dati 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 > AllowInsecureHTTPS su On ( xConfiguration HttpClient AllowInsecureHTTPS: Il ). Ciò consente l'uso di HTTPS senza convalidare il certificato del server.

Invio richieste HTTP(S)

Una volta abilitata la funzione di richiesta client HTTP(S), è possibile utilizzare i seguenti comandi per inviare richieste a un server HTTP(S). è Post, Put, Patch, Get o Delete.

  • xCommand HttpClient [AllowInsecureHTTPS: ] [Intestazione: ] [ResponseSizeLimit: ] [ResultBody: ] [Timeout: ] Url:

L'aggiunta dei campi dell'intestazione è facoltativa ed è possibile aggiungere fino a 20 campi.

Il parametro AllowInsecureHTTPS ha effetto solo se l'amministratore di sistema ha consentito l'uso di HTTPS senza convalidare il certificato del server. In tal caso, è possibile inviare i dati al server senza convalidare il certificato del server, se il parametro è impostato su True. Se si prescinde dal parametro o lo si imposta su Falso, i dati non vengono inviati se la convalida del certificato ha esito negativo.

Il parametro ResposenSizeLimit è la dimensione massima del payload (byte) che il dispositivo accetta come risposta dal server. Se il carico utile per la risposta è superiore a questa dimensione massima, il comando restituisce un errore di stato. Il messaggio di errore indica che la dimensione massima del file è stata superata. Tuttavia, questo non ha 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.

  • Testo normale: Includere il corpo nel risultato come testo normale. Se la risposta contiene lettere non stampabili, il comando restituisce un errore di stato con un messaggio che indica che i dati non stampabili sono stati rilevati.

Utilizzare il parametro Timeout per impostare un periodo di timeout (secondi). Se la richiesta non viene completata durante questo periodo, l'API restituisce un errore.

Inserire il carico utile (dati) subito dopo aver emesso il comando. Qualsiasi valore inserito, incluse le interruzioni di riga, fa parte del carico utile. Al termine, terminare con un'interruzione di riga ("\n") e una riga separata contenente solo un punto seguito da un'interruzione di riga (".\n"). A questo punto, il comando viene eseguito e i dati vengono inviati al server.

Esempi

Il corpo del messaggio è JSON in entrambi questi esempi. Può essere in qualsiasi formato, in base al formato previsto dal servizio che riceve i messaggi.

Esempio 1: Controllo dispositivo IoT tramite HTTP Post

Di seguito è una funzione macro che attiva una spia che è collegata a un bridge Philips Hue:

 funzione hue_command(dati) { var url = 'http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state'; intestazioni var = 'Content-Type: applicazione/json '; comando var =' {"on": true}'; XAPI. comando (' HttpClient put ', {' URL ': URL,' intestazione ': intestazioni}, comando); } 

È possibile eseguire la stessa operazione sulla riga di comando utilizzando l'API:

 Intestazione HttpClient Put xcommand: "Content-Type: URL application/json": "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} . 

Esempio 2: Pubblicazione dei dati in uno strumento di monitoraggio tramite HTTP Post

 Intestazione HttpClient Post xcommand: "Content-Type: URL applicazione/json": "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 sull'utilizzo delle richieste del client HTTP, vedere la Guida per la personalizzazione . Scegliere l'ultima versione.

Il supporto Cisco (TAC) non supporta il debug di codice di terze parti, incluse le macro. Controlla https://roomos.cisco.com se ti occorre assistenza con macro e codice di terze parti.