Ved å bruke makroer kan du sende data til en HTTP(S)-server når du vil. Du kan velge hvilke data du vil sende, og strukturere dem slik du vil. Ved å gjøre det på denne måten kan du tilpasse dataene til en allerede etablert tjeneste.

Sikkerhetstiltak:

  • Funksjonen HTTP(S) klientforespørsel er deaktivert som standard. En systemadministrator må eksplisitt aktivere funksjonen ved å stille inn HttpClient > Modus til ( xConfiguration HttpClient Mode: On).

  • Systemadministratoren kan forhindre bruk av HTTP ved å stille inn HttpClient > Tillat HTTP til Falsk ( xConfiguration HttpClient AllowHTTP: False).

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

  • Antallet samtidige HTTP(S)-forespørsler er begrenset.

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

Liste over tillatte HTTP(S)-servere

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

  • xCommand HttpClient Allow Hostname Add Expression: <Regular expression that matches the host name or IP address of the HTTP(S) server>

  • xCommand HttpClient Allow Hostname Clear

  • xCommand HttpClient Allow Hostname List

  • xCommand HttpClient Allow Hostname Remove Id: <id of an entry in the list>

Hvis listen ikke er tom, kan du sende HTTP(S)-forespørsler kun til serverne i listen. Hvis listen er tom, kan du sende forespørslene 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 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 stille inn HttpClient > Tillat InsecureHTTPS til ( xConfiguration HttpClient AllowInsecureHTTPS: On). Dette tillater bruk av HTTPS uten å validere sertifikatet til serveren.

Sender HTTP(S)-forespørsler

Når funksjonen HTTP(S)-klientforespørsel er aktivert, kan du bruke følgende kommandoer til å sende forespørsler til en HTTP(S)-server. <method> er enten Post, Put, Patch, Get, eller Delete.

  • xCommand HttpClient <Method> [AllowInsecureHTTPS: <True/False>] [Header: <Header text>] [ResponseSizeLimit: <Maximum response size>] [ResultBody: <None/PlainText/Base64>] [Timeout: <Timeout period>] Url: <URL to send the request to>

Det er valgfritt å legge til overskriftsfelt, men du kan legge til så mange som 20 felt.

Den AllowInsecureHTTPS parameteren 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, data sendes ikke hvis sertifikatvalideringen mislykkes.

Den ResposenSizeLimit parameter 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.

Bruke ResultBody parameter for å bestemme hvordan kroppen til HTTP-svaret fra serveren skal formateres i kommandoresultatet. Du har tre alternativer:

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

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

  • PlainText: 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 som sier at ikke-utskrivbare data ble oppdaget.

Bruke Timeout parameter for å angi en tidsavbruddsperiode (sekunder). Hvis forespørselen ikke fullføres i løpet av denne perioden, returnerer APIen en feil.

Skriv inn 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 command = '{"on":true}';
  xapi.command('HttpClient Put', { 'Url': url, 'Header': headers }, command);
}

Du kan gjøre det samme på kommandolinjen ved å bruke APIen:

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":"A user reported an issue with this system","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 Cisco Collaboration Developer-fellesskap hvis du trenger hjelp med makroer og tredjepartskode. Det er også mange utvikler- og integratorressurser på denne siden.