Invio di richieste HTTP dai dispositivi delle serie Board, Desk e Room
list-menuFeedback?
Questa funzione consente ai dispositivi della serie Board, Desk o Room di avviare e ricevere richieste HTTP (S) con un server HTTP (S). Questi dispositivi supportano metodi come Post, Put, Patch, Get ed Delete, che consentono diverse interazioni con il server.

Con le macro, può inviare dati a un server HTTP (S) ogni volta che ne ha bisogno. Lei può controllare quali dati vengono inviati e come sono organizzati, semplificando l'adattamento dei 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 esplicitamente la funzione impostando HttpClient > Mode su On ( xConfiguration HttpClient Mode: On).

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

  • L'amministratore di sistema può specificare un elenco di server HTTP (S) a cui il dispositivo è autorizzato a inviare dati. (Vedere i comandi XCommand HttpClient Allow Hostname .)

  • Il numero di richieste HTTP (S) simultanee è limitato.

Le configurazioni a cui si fa riferimento in questo articolo sono disponibili sia nell'interfaccia web del dispositivo che nell'API. I comandi sono disponibili tramite l'API. Leggi l'articolo Impostazioni avanzate per informazioni su come accedere all'interfaccia web e utilizzare l'API.

Elenco dei server HTTP (S) consentiti

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

  • XCommand HttpClient Consenti l'aggiunta dell'espressione del nome host: <Regular expression that matches the host name or IP address of the HTTP (S) server>

  • XCommand HttpClient Consenti la cancellazione del nome host

  • XCommand HttpClient Consenti l'elenco dei nomi host

  • XCommand HttpClient Consenti la rimozione dell'ID del nome host: <id of an entry in the list>

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

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

HTTPS senza convalida del certificato

Quando invia richieste tramite HTTPS, il dispositivo controlla il certificato del server HTTPS per impostazione predefinita. Se il certificato del server HTTPS non è valido, riceve un messaggio di errore. Il dispositivo non invia alcun dato a quel server.

Si consiglia di utilizzare HTTPS con convalida del certificato. Se la convalida del certificato non è possibile, l'amministratore di sistema può impostare HttpClient > AllowInsecureHttps su On ( xConfiguration HttpClient AllowInsecureHttps: On). Ciò consente l'uso di HTTPS senza convalidare il certificato del server.

Invio di richieste HTTP (S)

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

  • Comando HttpClient [AllowInsecureHttps:] [Header:] [ResponseSizeLimit:] [ResultBody:] [Timeout:] Url: <Method><True/False> <Header text><Maximum response size><None/PlainText/Base64> <Timeout period><URL to send the request to>

L'aggiunta di campi di intestazione è facoltativa e può 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, può inviare dati al server senza convalidare il certificato del server se il parametro è impostato su True . Se omette il parametro o lo imposta su False , i dati non vengono inviati se la convalida del certificato fallisce.

Il parametro ResponseSenSizeLimit è 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, ciò non ha alcun effetto sul lato server; il server ha ricevuto ed elaborato la richiesta correttamente.

Usa il parametro ResultBody per decidere come formattare il corpo della risposta HTTP del server nel risultato del comando. Ha tre opzioni:

  • Nessuno : non includa il corpo della risposta HTTP nel risultato del comando.

  • Base64 : Base64 codifica il corpo prima di includerlo nel risultato.

  • Testo normale : Includa 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.

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

Inserisca il payload (dati) subito dopo aver emesso il comando. Tutto ciò che inserisce, comprese le interruzioni di riga, fa parte del payload. Al termine, finisca 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); } 
   

Può fare lo stesso nella riga di comando utilizzando l'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: pubblicazione di dati su uno strumento di monitoraggio tramite 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"} . 
   

Ulteriori informazioni

Trova maggiori dettagli su come utilizzare le richieste dei client HTTP nella guida alla personalizzazione. Scelga la versione più recente.

L'assistenza Cisco (TAC) non supporta il debug di codice di terze parti, incluse le macro. Controlli https://roomos.cisco.com se ha bisogno di aiuto con macro e codice di terze parti.

Questo articolo è stato utile?
Questo articolo è stato utile?