Met macro's kunt u op elk gewenst moment gegevens naar een HTTP (S) -server sturen. U hebt controle over welke gegevens worden verzonden en hoe ze worden georganiseerd, waardoor het eenvoudig is om de gegevens aan te passen voor gebruik met bestaande diensten.
Veiligheidsmaatregelen:
-
De functie voor het aanvragen van een HTTP (S) -client is standaard uitgeschakeld. Een systeembeheerder moet de functie expliciet inschakelen door in te stellen op On (
XConfiguration HttpClient-modus:Aan). -
De systeembeheerder kan het gebruik van HTTP voorkomen door
:False). -
De systeembeheerder kan een lijst van HTTP (S) -servers specificeren waarnaar het apparaat gegevens mag verzenden. (Zie de
XCommand HttpClient Allow Hostname-opdrachten.) -
Het aantal gelijktijdige HTTP (S) -aanvragen is beperkt.
De configuraties waarnaar in dit artikel wordt verwezen, zijn zowel beschikbaar via de webinterface van het apparaat als in de API. Opdrachten zijn beschikbaar via de API. Lees het artikel Geavanceerde instellingen voor informatie over toegang tot de webinterface en het gebruik van de API.
Lijst van toegestane HTTP (S) -servers
De systeembeheerder kan deze opdrachten gebruiken om een lijst van maximaal tien toegestane HTTP (S) -servers (hosts) in te stellen en bij te houden:
-
XCommand HttpClient staat toe dat de hostnaam een expressie toevoegt:<Regular expression that matches the host name or IP address of the HTTP (S) server> -
XCommand HttpClient Allow Hostname Clear -
XCommand HttpClient Allow Hostnamenlijst -
XCommand HttpClient Allow Hostname Id verwijderen:<id of an entry in the list>
Als de lijst serveritems bevat, kunt u alleen HTTP (S) -aanvragen naar die servers sturen. Als de lijst echter leeg is, kunt u aanvragen naar elke HTTP (S) -server sturen.
De controle aan de hand van de lijst van toegestane servers wordt uitgevoerd bij zowel onveilige (HTTP) als veilige (HTTPS) gegevensoverdracht.
HTTPS zonder validatie van het certificaat
Bij het verzenden van aanvragen via HTTPS controleert het apparaat standaard het certificaat van de HTTPS-server. Als het HTTPS-servercertificaat niet geldig blijkt te zijn, krijgt u een foutmelding. Het apparaat stuurt geen gegevens naar die server.
We raden aan om HTTPS te gebruiken met certificaatvalidatie. Als certificaatvalidatie niet mogelijk is, kan de systeembeheerder On). Dit maakt het gebruik van HTTPS mogelijk zonder het certificaat van de server te valideren.
HTTP (S) -aanvragen verzenden
Zodra de functie voor het aanvragen van een HTTP (S) -client is ingeschakeld, kunt u de volgende opdrachten gebruiken om aanvragen naar een HTTP (S) -server te sturen.
<method>is ofwel
Post
,
Put
,
Patch
,
Get of
Delete
.
-
XCommand HttpClient [AllowInSecure HTTPS:] [Header:] [ResponseSizeLimit:] [ResultBody:] [Timeout:] Url:<Method><True/False> <Header text><Maximum response size><None/PlainText/Base64> <Timeout period><URL to send the request to>
Koptekstvelden toevoegen is optioneel en u kunt maximaal 20 velden toevoegen.
De
parameter
allowInsecureHTTPS is alleen van kracht als de systeembeheerder het gebruik van HTTPS heeft toegestaan zonder het certificaat van de server te valideren. Zo ja, dan kunt u gegevens naar de server sturen zonder het servercertificaat te valideren als de parameter is ingesteld op
True
. Als u de parameter weglaat of instelt op
False
, worden er geen gegevens verzonden als de validatie van het certificaat mislukt.
De
parameter
RespoSensizeLimit is de maximale payload-grootte (bytes) die het apparaat accepteert als reactie van de server. Als de payload van het antwoord groter is dan deze maximale grootte, geeft de opdracht een statusfout terug. De foutmelding geeft aan dat de maximale bestandsgrootte is overschreden. Dit heeft echter geen effect op de server; de server heeft het verzoek naar behoren ontvangen en verwerkt.
Gebruik de
parameter
ResultBody om te bepalen hoe de hoofdtekst van het HTTP-antwoord van de server moet worden geformatteerd in het resultaat van de opdracht. U hebt drie opties:
-
Geen: neem de hoofdtekst van het HTTP-antwoord niet op in het resultaat van de opdracht. -
Base64: Base64 codeert de body voordat deze in het resultaat wordt opgenomen. -
PlainText: Voeg de hoofdtekst toe aan het resultaat als platte tekst. Als het antwoord letters bevat die niet kunnen worden afgedrukt, geeft de opdracht een statusfout terug met de melding dat er niet-afdrukbare gegevens zijn aangetroffen.
Gebruik de
parameter
Timeout om een time-outperiode in te stellen (seconden). Als de aanvraag gedurende deze periode niet wordt voltooid, geeft de API een foutmelding.
Voer de payload (gegevens) in direct nadat u de opdracht hebt gegeven. Alles wat u invoert, inclusief regeleinden, maakt deel uit van de payload. Als u klaar bent, eindig dan met een regeleinde („\n”) en een aparte regel die slechts een punt bevat, gevolgd door een regeleinde (”. \n”). Nu wordt de opdracht uitgevoerd en worden de gegevens naar de server gestuurd.
Voorbeelden
In beide voorbeelden is de hoofdtekst van het bericht JSON. Het kan om het even welk formaat zijn, afhankelijk van het verwachte formaat van de dienst die de berichten ontvangt.
Voorbeeld 1: beheer van het IoT-apparaat via HTTP Post
Hier is een macrofunctie die een lamp aanzet die is aangesloten op een 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); }
U kunt hetzelfde doen op de commandoregel met behulp van de API:
xcommand HttpClient Put Header: "Content-Type: application/json" URL: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} .
Voorbeeld 2: Gegevens naar een monitoringtool plaatsen met behulp van 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"} .
Meer informatie
Meer informatie over het gebruik van HTTP-clientaanvragen vindt u in de Aanpassingshandleiding . Kies de laatste versie.
Cisco-ondersteuning (TAC) biedt geen ondersteuning voor het debuggen van code van derden, waaronder macro's. Kijk op https://roomos.cisco.com als u hulp nodig hebt met macro's en code van derden.