Med makroer kan du sende data til en HTTP-server, når du har brug for det. Du har kontrol over, hvilke data der sendes, og hvordan de er organiseret, hvilket gør det nemt at tilpasse dataene til brug med eksisterende tjenester.
Sikkerhedsforanstaltninger:
-
Funktionen HTTP-klientanmodning er deaktiveret som standard. En systemadministrator skal udtrykkeligt aktivere funktionen ved at indstille til On (
xConfiguration HttpClient Mode: On). -
Systemadministratoren kan forhindre brugen af HTTP ved at indstille HttpClient False ( xConfiguration HttpClient AllowHTTP: False
). -
Systemadministratoren kan angive en liste over HTTP-servere, som enheden må sende data til. (Se kommandoerne
xCommand HttpClient Tillad værtsnavn.) -
Antallet af samtidige HTTP-anmodninger er begrænset.
De konfigurationer, der henvises til i denne artikel, er tilgængelige både fra enhedens webgrænseflade og i API. Kommandoer er tilgængelige via API. Læs artiklen Avancerede indstillinger for at få oplysninger om, hvordan du får adgang til webgrænsefladen og bruger API.
Liste over tilladte HTTP-servere
Systemadministratoren kan bruge disse kommandoer til at oprette og vedligeholde en liste over op til ti tilladte HTTP-servere (værter):
-
xCommand HttpClient Allow Hostname Add Expression: <Regulært udtryk, der matcher værtsnavnet eller IP-adressen på HTTPs-serveren> -
xCommand HttpClient Tillad værtsnavn Ryd -
xCommand HttpClient Tillad værtsnavn liste -
xCommand HttpClient Tillad værtsnavn Fjern ID: <ID af en post på listen>
Hvis listen indeholder serverposter, kan du kun sende HTTP-anmodninger til disse servere. Men hvis listen er tom, kan du sende anmodninger til enhver HTTP-server.
Kontrollen mod listen over tilladte servere udføres både ved brug af usikker (HTTP) og sikker (HTTPS) overførsel af data.
HTTPS uden certifikatvalidering
Når der sendes anmodninger via HTTPS, kontrollerer enheden som standard HTTPS-serverens certifikat. Hvis HTTPS-servercertifikatet ikke viser sig at være gyldigt, får du en fejlmeddelelse. Enheden sender ingen data til den pågældende server.
Vi anbefaler, at du bruger HTTPS sammen med certifikatvalidering. Hvis certifikatvalidering ikke er mulig, kan systemadministratoren indstille HttpClient On ( xConfiguration HttpClient AllowInsecureHTTPS: Til ). Dette tillader brugen af HTTPS uden at validere serverens certifikat.
Afsendelse af HTTP-anmodninger
Når HTTPs-klientanmodningsfunktionen er aktiveret, kan du bruge følgende kommandoer til at sende anmodninger til en HTTP-server. <method>is entenPOST , PUT,Patch,Get eller Delete.
-
xCommand HttpClient <Metode> [AllowInsecureHTTPS: <Sand/Falsk>] [Overskrift: <Overskriftstekst>] [ResponseSizeLimit: <Maksimal svarstørrelse>] [Resultatbrødtekst: <Ingen/Almindelig tekst/Base64>] [Timeout: <Timeoutperiode>] URL: <URL, som anmodningen skal sendes til>
Det er valgfrit at tilføje overskriftsfelter, og du kan tilføje op til 20 felter.
Parameteren AllowInsecureHTTPS har kun virkning, hvis systemadministratoren har tilladt brugen af HTTPS uden at validere serverens certifikat. Hvis det er tilfældet, kan du sende data til serveren uden at validere servercertifikatet, hvis parameteren er indstillet til Sand . Hvis du udelader parameteren eller indstiller den til Falsk , sendes der ikke data, hvis certifikatvalideringen mislykkes.
Parameteren ResposenSizeLimit er den maksimale nyttelaststørrelse (byte), som enheden accepterer som svar fra serveren. Hvis svardataene er større end denne maksimale størrelse, returnerer kommandoen en statusfejl. Fejlmeddelelsen siger, at den maksimale filstørrelse er overskredet. Dette har dog ingen effekt på serversiden; Serveren har modtaget og behandlet anmodningen korrekt.
Brug parameteren ResultBody til at bestemme, hvordan brødteksten i HTTP-svaret fra serveren skal formateres i kommandoresultatet. Du har tre muligheder:
-
Ingen: Medtag ikke brødteksten i HTTP-svaret i kommandoresultatet. -
Base64: Base64 koder brødteksten, før den medtages i resultatet. -
Almindelig tekst: Medtag brødteksten i resultatet som almindelig tekst. Hvis svaret indeholder breve, der ikke kan udskrives, returnerer kommandoen en statusfejl med en meddelelse om, at der blev registreret data, der ikke kan udskrives.
Brug parameteren Timeout til at angive en timeoutperiode (sekunder). Hvis anmodningen ikke fuldføres i denne periode, returnerer API en fejl.
Indtast nyttelasten (dataene) direkte efter, at du har udstedt kommandoen. Alt, hvad du indtaster, herunder linjeskift, er en del af nyttelasten. Når du er færdig, afsluttes du med et linjeskift ("\n") og en separat linje, der kun indeholder et punktum, efterfulgt af et linjeskift (".\n"). Nu udføres kommandoen, og dataene sendes til serveren.
Eksempler:
Meddelelsens brødtekst er JSON i begge disse eksempler. Det kan være et hvilket som helst format, afhængigt af det forventede format for den tjeneste, der modtager meddelelserne.
Eksempel 1: IoT-enhedsstyring ved hjælp af HTTP POST
Her er en makrofunktion, der tænder et lys, der er forbundet til en Philips Hue Bridge:
funktion 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); }
Du kan gøre det samme på kommandolinjen ved hjælp af API:
xcommand HttpClient PUT Header: "Content-Type: application / json" URL: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} .
Eksempel 2: Udstationering af data til et overvågningsværktøj ved hjælp af HTTP POST
xcommand HttpClient POST Header: "Content-Type: application/json" URL: "https://mymonitoringserver.com/service/devicemonitoring" {"Message":"En bruger rapporterede et problem med dette system","systemName":"BoardRoom 4th floor","softwareVersion":"ce9.6.0","softwareReleaseDate":"2018-12-13","videoMonitors":"Dual"} .
Yderligere oplysninger
Du kan finde flere oplysninger om, hvordan du bruger HTTP-klientanmodninger, i tilpasningsvejledningen . Vælg den nyeste version.
Cisco support (TAC) understøtter ikke fejlfinding af tredjepartskode, herunder makroer. Tjek https://roomos.cisco.com , hvis du har brug for hjælp til makroer og tredjepartskode.