Ta funkcja umożliwia urządzeniom z serii Board, Desk lub Room inicjowanie i odbieranie żądań HTTP za pomocą serwera HTTP. Urządzenia te obsługują metody takie jak Post, Put, Patch, Get i Delete, umożliwiając różne interakcje z serwerem.
Dzięki makrom możesz wysyłać dane do serwera HTTP, kiedy tylko zajdzie taka potrzeba. Masz kontrolę nad tym, jakie dane są wysyłane i jak są zorganizowane, co ułatwia dostosowanie danych do użytku z istniejącymi usługami.
Środki bezpieczeństwa:
-
Funkcja żądania klienta HTTP(S) jest domyślnie wyłączona. Administrator systemu musi jawnie włączyć funkcję przez ustawienie
na Wł. (xConfiguration HttpClient Mode: On
). -
Administrator systemu może uniemożliwić korzystanie z HTTP ustawiając
na False (xConfiguration HttpClient AllowHTTP: False
). -
Administrator systemu może określić listę serwerów HTTPs, do których może wysyłać dane urządzenie. (Zobacz
komendy xCommand HttpClient Allow Hostname
). -
Liczba jednoczesnych żądań HTTP(S) jest ograniczona.
Konfiguracje, o których mowa w tym artykule, są dostępne zarówno w interfejsie internetowym urządzenia, jak i w API. Polecenia są dostępne za pośrednictwem API. Przeczytaj artykuł Ustawienia zaawansowane, aby dowiedzieć się, jak uzyskać dostęp do interfejsu WWW i korzystać z interfejsu API.
Lista dozwolonych serwerów HTTP
Za pomocą tych poleceń administrator systemu może skonfigurować i utrzymywać listę maksymalnie dziesięciu dozwolonych serwerów (hostów) HTTP(S):
-
xCommand HttpClient Allow Hostname Add Expression: <Wyrażenie regularne odpowiadające nazwie hosta lub adresowi IP serwera HTTP>
-
xCommand HttpClient Zezwalaj na czyszczenie nazwy hosta
-
xCommand HttpClient Zezwalaj na listę nazw hostów
-
xCommand HttpClient Allow Hostname Remove Id: <id wpisu na liście>
Jeśli lista zawiera wpisy serwera, można wysyłać żądania HTTP tylko do tych serwerów. Jeśli jednak lista jest pusta, można wysyłać żądania do dowolnego serwera HTTP.
Sprawdzenie listy dozwolonych serwerów odbywa się zarówno przy niezabezpieczonym (HTTP) jak i bezpiecznym (HTTPS) przesyłaniu danych.
HTTPS bez sprawdzania poprawności certyfikatu
Podczas wysyłania żądań za pośrednictwem protokołu HTTPS urządzenie domyślnie sprawdza certyfikat serwera HTTPS. Jeśli certyfikat serwera HTTPS nie zostanie uznany za ważny, wyświetlany jest komunikat o błędzie. Urządzenie nie wysyła żadnych danych do tego serwera.
Zalecamy stosowanie protokołu HTTPS z walidacją certyfikatów. Jeśli walidacja certyfikatu nie jest możliwa, administrator systemu może ustawić xConfiguration HttpClient AllowInsecureHTTPS: On
). Pozwala to na korzystanie z protokołu HTTPS bez konieczności sprawdzania poprawności certyfikatu serwera.
Wysyłanie żądań HTTP
Po włączeniu funkcji żądania klienta HTTP(S), możesz użyć następujących poleceń do wysyłania żądań do serwera HTTP(S). <method>
to albo Post
, Put
, Patch
, Get
lub Delete
.
-
xCommand HttpClient <Metoda> [AllowInsecureHTTPS: <True/False>] [Nagłówek: <Tekst nagłówka>] [ResponseSizeLimit: <Maksymalny rozmiar odpowiedzi>] [ResultBody: <None/PlainText/Base64>] [Limit czasu: <Timeout period>] Adres URL: <adres URL, na który ma zostać wysłane żądanie>
Dodanie pól nagłówka jest opcjonalne i można dodać maksymalnie 20 pól.
Parametr AllowInsecureHTTPS
działa tylko wtedy, gdy administrator systemu zezwolił na korzystanie z HTTPS bez walidacji certyfikatu serwera. Jeśli tak, to możesz wysyłać dane do serwera bez sprawdzania poprawności certyfikatu serwera, jeśli parametr jest ustawiony na True
. Jeśli pominiesz ten parametr lub ustawisz go na False
, dane nie zostaną wysłane, jeśli sprawdzanie poprawności certyfikatu nie powiedzie się.
Parametr ResposenSizeLimit
to maksymalny rozmiar ładunku (w bajtach), który urządzenie akceptuje jako odpowiedź od serwera. Jeżeli ładunek odpowiedzi jest większy niż ten maksymalny rozmiar, polecenie zwraca błąd stanu. Komunikat o błędzie mówi, że maksymalny rozmiar pliku został przekroczony. Nie ma to jednak żadnego wpływu na stronę serwera; serwer otrzymał i przetworzył żądanie prawidłowo.
Użyj parametru ResultBody
aby zdecydować jak sformatować treść odpowiedzi HTTP z serwera w wyniku polecenia. Dostępne są trzy opcje:
-
-
Base64
: Base64 koduje ciało przed włączeniem go do wyniku. -
Zwykły tekst
: Dołącz treść do wyniku jako zwykły tekst. Jeżeli odpowiedź zawiera niedrukowalne litery, to polecenie zwraca błąd stanu z komunikatem, że napotkano niedrukowalne dane.
Użyj parametru Timeout
, aby ustawić limit czasu (w sekundach). Jeśli żądanie nie zostanie ukończone w tym czasie, API zwraca błąd.
Wprowadź payload (dane) zaraz po wydaniu polecenia. Wszystko, co wpiszesz, łącznie z przerwami w linii, jest częścią ładunku. Kiedy skończysz, zakończ linijką ("\n") i oddzielną linijką zawierającą tylko kropkę, po której następuje przerwa (".\n"). Teraz polecenie jest wykonywane, a dane są wysyłane do serwera.
Przykłady
W obu tych przykładach ciało wiadomości to JSON. Może to być dowolny format, w zależności od oczekiwanego formatu usługi, która odbiera wiadomości.
Przykład 1: Kontrola urządzeń IoT przy użyciu HTTP Post
Oto funkcja makra, która włącza światło podłączone do mostka Philips Hue:
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); }
Możesz zrobić to samo w wierszu poleceń, używając API:
xcommand httpclient put header: "content-type: application/json" URL: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} .
Przykład 2: Wysyłanie danych do narzędzia monitorującego za pomocą HTTP Post
xcommand HttpClient Post Header: "Content-Type: application/json" Adres internetowy: "https://mymonitoringserver.com/service/devicemonitoring" {"Message":"Użytkownik zgłosił problem z tym systemem","systemName":"BoardRoom 4th floor","softwareVersion":"ce9.6.0","softwareReleaseDate":"2018-12-13","videoMonitors":"Dual"} .
Dalsze informacje
Więcej szczegółów na temat używania żądań klienta HTTP można znaleźć w podręczniku Dostosowywanie. Wybierz najnowszą wersję.
Pomoc techniczna firmy Cisco (TAC) nie obsługuje debugowania kodu innej firmy, w tym makr. Sprawdźhttps://roomos.cisco.com jeśli potrzebujesz pomocy z makrami i kodem innych firm.