Med makroer kan du sende data til en HTTPs-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 HTTPs klientforespørsel er deaktivert som standard. En systemadministrator må eksplisitt aktivere funksjonen ved å sette HttpClient > Modus til ( xConfiguration HttpClient Mode: On ).

  • Systemadministratoren kan forhindre bruk av HTTP ved å sette HttpClient > AllowHTTP til False ( xConfiguration HttpClient AllowHTTP: False ).

  • Systemadministratoren kan spesifisere en liste over HTTPs-servere som enheten har lov til å sende data til. (Se xCommand HttpClient Allow Hostname kommandoene.)

  • Antallet samtidige HTTP-forespørsler er begrenset.

Konfigurasjonene som refereres til i denne artikkelen er tilgjengelige både fra enhetens nettgrensesnitt og i API. Kommandoer er tilgjengelige gjennom API. Les artikkelen Avanserte innstillinger for informasjon om hvordan du får tilgang til nettgrensesnittet og bruker API.

Liste over tillatte HTTP-servere

Systemadministratoren kan bruke disse kommandoene til å sette opp og vedlikeholde en liste med opptil ti tillatte HTTP-servere (verter):

  • xCommand HttpClient Tillat vertsnavn Legg til uttrykk: <Regulært uttrykk som samsvarer med vertsnavnet eller IP-adressen til HTTPs-serveren>

  • xCommand HttpClient Tillat vertsnavn slett

  • xCommand HttpClient Tillat vertsnavnliste

  • xCommand HttpClient Tillat vertsnavn Fjern Id: <id for en oppføring i listen>

Hvis listen inneholder serveroppføringer, kan du bare sende HTTP-forespørsler til disse serverne. Men hvis listen er tom, kan du sende forespørsler til en hvilken som helst HTTPs-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 over HTTPS, sjekker enheten sertifikatet til HTTPS-serveren som standard. Hvis HTTPS-serversertifikatet ikke blir funnet å være gyldig, får du en feilmelding. Enheten sender ingen data til den serveren.

Vi anbefaler å bruke HTTPS med sertifikatvalidering. Hvis sertifikatvalidering ikke er mulig, kan systemadministratoren sette HttpClient > AllowInsecureHTTPS til ( xConfiguration HttpClient AllowInsecureHTTPS: På ). Dette tillater bruk av HTTPS uten å validere sertifikatet til serveren.

Sender HTTP-forespørsler

Når funksjonen for HTTPs-klientforespørsel er aktivert, kan du bruke følgende kommandoer til å sende forespørsler til en HTTPs-server. <metode> er enten Innlegg , Put , Patch , Hent eller Slett .

  • xCommand HttpClient <Metode> [AllowInsecureHTTPS: <True/False>] [Header: <Header text>] [ResponseSizeLimit: <Maksimal svarstørrelse>] [ResultBody: <Ingen/PlainText/Base64>] [Tidsavbruddsperiode: > URL: <URL for å sende forespørselen til>

Å legge til overskriftsfelt er valgfritt, og du kan legge til opptil 20 felt.

Parameteren AllowInsecureHTTPS har kun effekt hvis systemadministratoren 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 True . Hvis du utelater parameteren, eller setter den til False , sendes ikke data hvis sertifikatvalideringen mislykkes.

Parameteren ResposenSizeLimit er den maksimale nyttelaststørrelsen (byte) som enheten godtar som et svar fra serveren. Hvis responsnyttelasten er større enn denne maksimale størrelsen, returnerer kommandoen en statusfeil. Feilmeldingen sier at den maksimale filstørrelsen er overskredet. Dette har imidlertid ingen effekt på serversiden; serveren har mottatt og behandlet forespørselen på riktig måte.

Bruk ResultBody parameteren for å bestemme hvordan teksten til HTTP-svaret fra serveren skal formateres i kommandoresultatet. Du har tre alternativer:

  • Ingen : Ikke ta med teksten til HTTP-svaret i kommandoresultatet.

  • Base64 : Base64 koder kroppen før den inkluderes i resultatet.

  • PlainText : Inkluder brødteksten i resultatet som ren tekst. Hvis svaret inneholder bokstaver som ikke kan skrives ut, returnerer kommandoen en statusfeil med en melding som sier at ikke-utskrivbare data ble oppdaget.

Bruk parameteren Tidsavbrudd for å angi en tidsavbruddsperiode (sekunder). Hvis forespørselen ikke fullføres i løpet av denne perioden, returnerer API en feil.

Angi nyttelasten (data) rett etter at du har gitt kommandoen. Alt du legger inn, inkludert linjeskift, er en del av nyttelasten. Når du er ferdig, avslutt med et linjeskift ("\n") og en egen linje som bare inneholder et punktum etterfulgt av et linjeskift (".\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 det forventede formatet til 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 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 kommando = '{"on":true}'; xapi.command('HttpClient Put', { 'Url': url, 'Header': headers }, kommando); } 

Du kan gjøre det samme på kommandolinjen ved å bruke 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: Legge ut data til et overvåkingsverktøy ved hjelp av HTTP Post

 xcommand HttpClient Post Header: "Content-Type: application/json" URL: "https://mymonitoringserver.com/service/devicemonitoring" {"Message":"En bruker rapporterte et problem med dette systemet","systemName":"BoardRoom 4th floor","softwareVersion": "ce9.6.0","softwareReleaseDate":"2018-12-13","videoMonitors":"Dual"} . 

Mer informasjon

Finn mer informasjon om hvordan du bruker HTTP-klientforespørsler i Tilpasningsveiledning . Velg den nyeste versjonen.

Cisco-støtte (TAC) støtter ikke feilsøking av tredjepartskode, inkludert makroer. Vennligst sjekk https://roomos.cisco.com hvis du trenger hjelp med makroer og tredjepartskode.