Med makroer kan du sende data til en HTTP(S)-server når du trenger det. Du har kontroll over hvilke data som sendes og hvordan de er organisert, noe som gjør det enkelt å tilpasse dataene for bruk med eksisterende tjenester.
Sikkerhetstiltak:
-
Funksjonen HTTP(S) klientforespørsel er deaktivert som standard. En systemansvarlig må eksplisitt aktivere funksjonen ved å sette
til På (xConfiguration HttpClient Mode: På
). -
Systemansvarlig kan forhindre bruk av HTTP ved å angi
til False (xConfiguration HttpClient AllowHTTP: Usann
). -
Systemansvarlig kan angi en liste over HTTP(S)-servere som enheten har tillatelse til å sende data til. (Se
xCommand HttpClient Allow Host Name
-kommandoer.) -
Antall samtidige HTTP(S)-forespørsler er begrenset.
Konfigurasjonene som er nevnt i denne artikkelen, er tilgjengelige både fra enhetens webgrensesnitt og i API-en. Kommandoer er tilgjengelige gjennom API-en. Les artikkelen Avanserte innstillinger for informasjon om hvordan du får tilgang til webgrensesnittet og bruker API-en.
Liste over tillatte HTTP(S)-servere
Systemansvarlig kan bruke disse kommandoene til å konfigurere og vedlikeholde en liste med opptil ti tillatte HTTP(S)-servere (verter):
-
xCommand HttpClient Allow Hostname Add Expression:
-
xCommand HttpClient Tillat å fjerne vertsnavn
-
xCommand HttpClient tillat liste over vertsnavn
-
xCommand HttpClient Tillat Vertsnavn Fjern Id:
Hvis listen inneholder serveroppføringer, kan du bare sende HTTP(S)-forespørsler til disse serverne. Hvis listen er tom, kan du imidlertid sende forespørsler til en hvilken som helst HTTP(S)-server.
Kontrollen mot listen over tillatte servere utføres både ved bruk av usikker (HTTP) og sikker (HTTPS) overføring av data.
HTTPS uten sertifikatvalidering
Når du sender forespørsler via HTTPS, kontrollerer enheten sertifikatet til HTTPS-serveren som standard. Hvis HTTPS-serversertifikatet ikke er gyldig, får du en feilmelding. Enheten sender ingen data til den serveren.
Vi anbefaler at du bruker HTTPS med sertifikatvalidering. Hvis sertifikatvalidering ikke er mulig, kan systemansvarlig angi xConfiguration HttpClient AllowInsecureHTTPS: På
). Dette gjør det mulig å bruke HTTPS uten å validere sertifikatet til serveren.
Sende HTTP(S) forespørsler
Når funksjonen for HTTP(S)-klientforespørsel er aktivert, kan du bruke følgende kommandoer til å sende forespørsler til en HTTP(S)-server.
er enten Legg inn
, Legg inn
, Oppdater
, Hent
eller Slett
.
-
xCommand HttpClient [AllowUnsecureHTTPS: ] [Topptekst: ] [ResponseSizeLimit: ] [ResultBody: ] [Tidsavbrudd: ] Url:
Det er valgfritt å legge til topptekstfelt, og du kan legge til opptil 20 felt.
Parameteren AllowInsecureHTTPS
har kun virkning hvis systemansvarlig har tillatt bruk av HTTPS uten å validere sertifikatet til serveren. I så fall kan du sende data til serveren uten å validere serversertifikatet hvis parameteren er satt til Sann
. Hvis du utelater parameteren, eller setter den til Usann
, sendes ikke data hvis sertifikatvalideringen mislykkes.
ResposenSizeLimit
-parameteren er den maksimale nyttelaststørrelsen (byte) som enheten godtar som svar fra serveren. Hvis svarnyttelasten er større enn denne maksimumsstørrelsen, returnerer kommandoen en statusfeil. Feilmeldingen sier at maksimal filstørrelse er overskredet. Dette har imidlertid ingen innvirkning på serversiden; serveren har mottatt og behandlet forespørselen riktig.
Bruk parameteren ResultBody
til å bestemme hvordan brødteksten i HTTP-svaret fra serveren skal formateres i kommandoresultatet. Du har tre alternativer:
-
Ingen
: Ikke inkluder brødteksten i HTTP-svaret i kommandoresultatet. -
Base64
: Base64 koder brødteksten før den inkluderes i resultatet. -
Ren tekst
: Ta med brødteksten i resultatet som ren tekst. Hvis svaret inneholder bokstaver som ikke kan skrives ut, returnerer kommandoen en statusfeil med en melding om at det oppstod data som ikke kan skrives ut.
Bruk parameteren Tidsavbrudd
for å angi en tidsavbruddsperiode (sekunder). Hvis forespørselen ikke fullføres i løpet av denne perioden, returnerer API-en en feil.
Skriv inn nyttelasten (data) rett etter at du har utstedt kommandoen. Alt du skriver inn, inkludert linjebrudd, er en del av nyttelasten. Når dette er gjort, avslutt med en linjebryting (“\n”) og en egen linje som bare inneholder en periode etterfulgt av en linjebryting (“.\n”). Nå utføres kommandoen, og dataene sendes til serveren.
Eksempler
Brødteksten i meldingen er JSON i begge disse eksemplene. Det kan være et hvilket som helst format, avhengig av forventet format på tjenesten som mottar meldingene.
Eksempel 1: IoT-enhetskontroll ved hjelp av HTTP Post
Her er en makrofunksjon som slår på et lys som er koblet til en Philips Hue-bro:
funksjon 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, «Topptekst»: headers }, kommando); }
Du kan gjøre det samme på kommandolinjen ved hjelp av API:
xcommand HttpClient satte topptekst: "Innholdstype: application/json" URL: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} .
Eksempel 2: Legge inn data til et overvåkingsverktøy ved hjelp av HTTP Post
xcommand HttpClient Post-topptekst: "Innholdstype: application/json" URL: "https://mymonitoringserver.com/service/devicemonitoring" {"Message":"En bruker rapporterte et problem med dette systemet","systemName":"BoardRoom 4. etasje","softwareVersion":"ce9.6.0","softwareReleaseDate":"2018-12-13","videoMonitors":"Dual"} .
Ytterligere informasjon
Du finner mer informasjon om hvordan du bruker HTTP-klientforespørsler i Tilpasningsveiledning. Velg den nyeste versjonen.
Cisco Support (TAC) støtter ikke feilsøking av tredjepartskode, inkludert makroer. Sjekk https://roomos.cisco.com om du trenger hjelp med makroer og tredjepartskode.