Met macro's kunt u wanneer u dat nodig hebt gegevens naar een HTTPs-server verzenden. U hebt zelf controle over welke gegevens worden verzonden en hoe deze worden ingedeeld. Het is eenvoudig om de gegevens aan te passen voor gebruik met bestaande services.
Beveiligingsmaatregelen:
-
De functie HTTPs-clientaanvraag is standaard uitgeschakeld. Een systeembeheerder moet de functie expliciet inschakelen door HttpClient>Mode in te stellen xConfiguratiemodus HttpClient: Aan ).
-
De systeembeheerder kan het gebruik van HTTP voorkomen door HttpClient op False (
xConfiguratie HttpClient AllowHTTP: Onwaar). -
De systeembeheerder kan een lijst met HTTPs-servers opgeven waarnaar het apparaat gegevens mag verzenden. (Zie de
opdrachten xCommand HttpClient hostnaamtoestaan.) -
Het aantal gelijktijdige HTTPs-verzoeken is beperkt.
De configuraties waarnaar in dit artikel wordt verwezen, zijn beschikbaar via de webinterface van het apparaat en in API. Opdrachten zijn beschikbaar via API. Lees het artikel Geavanceerde instellingen voor informatie over het openen van de webinterface en het gebruik van API.
Lijst met toegestane HTTPs-servers
De systeembeheerder kan deze opdrachten gebruiken om een lijst met maximaal tien HTTP-servers (hosts) in te stellen en bij te houden:
-
xCommand HttpClient toestaan Hostnaam toevoegen expressie: <Regelvormige uitdrukking die overeenkomt met de hostnaam of IP-adres van de HTTPs-server> -
xCommand HttpClient toestaan hostnaam wissen -
lijst met xCommand HttpClient toegestane hostnamen -
xCommand HttpClient toestaan hostnaam verwijderen ID: <ID van een vermelding in de lijst>
Als de lijst serververmeldingen bevat, kunt u alleen HTTP-verzoeken naar deze servers sturen. Als de lijst echter leeg is, kunt u verzoeken naar elke HTTPs-server sturen.
De controle in de lijst met toegestane servers wordt zowel bij het gebruik van beveiligde gegevens (HTTP) als bij een veilige gegevensoverdracht (HTTPS) uitgevoerd.
HTTPS zonder certificaatvalidatie
Bij het verzenden van verzoeken via HTTPS controleert het apparaat standaard het certificaat van de HTTPS-server. Er verschijnt een foutbericht als het HTTPS-servercertificaat niet geldig blijkt te zijn. Het apparaat verzendt geen gegevens naar die server.
We raden aan HTTPS te gebruiken met certificaatvalidatie. Als een certificaatvalidatie niet mogelijk is, kan de systeembeheerder HttpClient On ( xConfiguration HttpClient AllowInsecureHTTPS: On ). Hierdoor kan HTTPS worden gebruikt zonder het certificaat van de server te valideren.
HTTPs-verzoeken verzenden
Nadat de functie HTTPs-clientaanvraag is ingeschakeld, kunt u met de volgende opdrachten verzoeken naar een HTTPs-server verzenden. <method> is POST , PUT , Patch , Get of Delete .
-
xCommand HttpClient <Method> [AllowInsecureHTTPS: <True/False>] [Header: <Header text>] [ResponseSizeLimit: <Maximum response size>] [ResultBody: <None/PlainText/Base64>] [Time-out: <Tijdperiode>] Url: <URL om het verzoek te verzenden naar>
Het toevoegen van koptekstvelden is optioneel en u kunt maximaal 20 velden toevoegen.
De parameter AllowInsecureHTTPS heeft alleen een effect als de systeembeheerder het gebruik van HTTPS heeft toegestaan zonder het certificaat van de server te valideren. Als de parameter is ingesteld op Waar , kunt u gegevens naar de server sturen zonder het servercertificaat te valideren. Als u de parameter weglaat of instelt op Onwaar , worden er geen gegevens verzonden als de certificaatvalidatie mislukt.
De parameter ResposenSizeLimit is de maximale size (bytes) die het apparaat accepteert als een reactie van de server. Als is groter dan deze maximale grootte, geeft de opdracht een statusfout terug. In de foutmelding wordt gemeld dat de maximale bestandsgrootte is overschreden. Dit heeft echter geen effect op de serverzijde. de server het verzoek correct heeft ontvangen en verwerkt.
Gebruik de parameter ResultBody om te bepalen hoe u de tekst van de HTTP-reactie van de server opmaken in het opdrachtresultaat. U hebt drie opties:
-
Geen: neem niet de hoofdtekst van het HTTP-antwoord op in het commandoresultaat. -
Base64: Base64 codeer de body voordat deze in het resultaat wordt opgenomen. -
Normale tekst: Neem de hoofdtekst in het resultaat op in platte tekst. Als het antwoord niet-afdrukbare letters bevat, wordt een statusfout geretourneerd met een bericht dat er niet-afdrukbare gegevens zijn gevonden.
Gebruik de time-outparameter om een time-outperiode (seconden) in te stellen. Als het verzoek tijdens deze periode niet is voltooid, geeft het nummer API een fout.
Voer de ene op het andere tijdstip in, nadat u de opdracht hebt uitgegeven. Alles wat je invoert, inclusief lijnbreuken, is onderdeel van de aanstelling. Als u dit doet, eindigt u met een lijnonderbreking ("\n") en een afzonderlijke lijn met slechts een punt, gevolgd door een lijnonderbreking (".\n"). Nu is de opdracht uitgevoerd en worden de gegevens naar de server verzonden.
Voorbeelden
De hoofdtekst van het bericht is JSON in beide voorbeelden. Het kan elke indeling zijn, afhankelijk van de verwachte indeling van de service die de berichten ontvangt.
Voorbeeld 1: IoT-apparaatbesturing met HTTP POST
Hier volgt een macrofunctie waarmee een lichtje wordt ingeschakeld dat is aangesloten op een Philips Hue Bridge:
functie 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': 'Header': header': headers }, command); }
U kunt hetzelfde doen via de opdrachtregel met het veld API:
xcommand HttpClient PUT Header: "Inhoudstype: application/json" URL: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} .
Voorbeeld 2: Gegevens naar een controleprogramma posten via HTTP POST
xcommand HttpClient POST Header: "Content-Type: application/json" URL: "https://mymonitoringserver.com/service/devicemonitoring" {"Message":"Een gebruiker heeft een probleem gemeld met dit systeem","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 meest recente versie.
Cisco support (TAC) ondersteunt geen foutopsporing van code van derden, inclusief macro's. Schakel# https://roomos.cisco.com in als u hulp nodig hebt met macro's en code van derden.