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 jest domyślnie wyłączona. Administrator systemu musi jawnie włączyć tę funkcję, ustawiając na On (
xConfiguration HttpClient Mode: On). -
Administrator systemu może zapobiec używaniu protokołu HTTP, ustawiając na wartość False (
xConfiguration HttpClient AllowHTTP: False). -
Administrator systemu może określić listę serwerów HTTP, do których urządzenie może wysyłać dane. (Zobacz
polecenia xCommand HttpClient Allow Hostname). -
Liczba równoczesnych żądań HTTP 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 uzyskać informacje na temat uzyskiwania dostępu do interfejsu internetowego i korzystania z API.
Lista dozwolonych serwerów HTTP
Za pomocą poniższych poleceń administrator systemu może skonfigurować i prowadzić listę maksymalnie dziesięciu dozwolonych serwerów HTTP (hostów):
-
xCommand HttpClient Allow Hostname Add Expression: <Wyrażenie regularne pasujące do nazwy hosta lub adresu IP serwera HTTP> -
xCommand HttpClient Zezwalaj na czyszczenie nazwy hosta -
xCommand HttpClient Zezwalaj na listę nazw hostów -
xCommand HttpClient Zezwalaj na nazwę hosta Usuń 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 w przypadku korzystania z niezabezpieczonego (HTTP), jak i bezpiecznego (HTTPS) przesyłania danych.
HTTPS bez sprawdzania poprawności certyfikatu
Podczas wysyłania żądań przez protokół HTTPS urządzenie domyślnie sprawdza certyfikat serwera HTTPS. Jeśli certyfikat serwera HTTPS nie zostanie uznany za prawidłowy, zostanie wyświetlony komunikat o błędzie. Urządzenie nie wysyła żadnych danych do tego serwera.
Zalecamy używanie protokołu HTTPS ze sprawdzaniem poprawności certyfikatu. Jeśli sprawdzenie poprawności certyfikatu nie jest możliwe, administrator systemu może ustawić HttpClient On ( xConfiguration HttpClient AllowInsecureHTTPS: On ). Umożliwia to korzystanie z protokołu HTTPS bez sprawdzania poprawności certyfikatu serwera.
Wysyłanie żądań HTTP
Po włączeniu funkcji żądań klienta HTTP można używać następujących poleceń do wysyłania żądań do serwera HTTP. <method>is alboPOST , 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 protokołu HTTPS bez sprawdzania poprawności certyfikatu serwera. W takim przypadku można wysłać dane do serwera bez sprawdzania poprawności certyfikatu serwera, jeśli parametr ma wartość Prawda . Jeśli parametr zostanie pominięty lub zostanie ustawiony na wartość Fałsz , dane nie zostaną wysłane, jeśli sprawdzenie poprawności certyfikatu zakończy się niepowodzeniem.
Parametr ResposenSizeLimit to maksymalny rozmiar ładunku (bajty), który urządzenie akceptuje jako odpowiedź z serwera. Jeśli ładunek odpowiedzi jest większy niż ten maksymalny rozmiar, polecenie zwraca błąd stanu. Komunikat o błędzie informuje, że maksymalny rozmiar pliku został przekroczony. Nie ma to jednak wpływu na stronę serwera; Serwer prawidłowo odebrał i przetworzył żądanie.
Użyj parametru ResultBody , aby zdecydować, jak sformatować treść odpowiedzi HTTP z serwera w wyniku polecenia. Dostępne są trzy opcje:
-
Brak: Nie dołączaj treści odpowiedzi HTTP do wyniku polecenia. -
Base64: Base64 koduje ciało przed włączeniem go do wyniku. -
Zwykły tekst: Dołącz treść do wyniku jako zwykły tekst. Jeśli odpowiedź zawiera litery niedrukowalne, polecenie zwraca błąd stanu z komunikatem informującym, że napotkano dane niedrukowalne.
Użyj parametru Limit czasu, aby ustawić limit czasu (sekundy). Jeśli żądanie nie zostanie zrealizowane w tym okresie, API zwraca błąd.
Wprowadź ładunek (dane) bezpośrednio po wydaniu polecenia. Wszystko, co wprowadzasz, w tym podziały wierszy, jest częścią ładunku. Po zakończeniu zakończ podziałem wiersza ("\n") i oddzielnym wierszem zawierającym tylko kropkę, po której następuje podział wiersza (".\n"). Teraz polecenie jest wykonywane, a dane są wysyłane do serwera.
Przykłady
Treść wiadomości to JSON w obu tych przykładach. 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 protokołu HTTP POST
Oto funkcja makro, 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 Nagłówek: "Content-Type: application/json" Adres internetowy: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} .
Przykład 2: Księgowanie danych w narzędziu monitorującym przy użyciu HTTP POST
xcommand HttpClient POST Nagłówek: "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 informacji na temat korzystania z żądań klienta HTTP można znaleźć w Przewodniku dostosowywania. Wybierz najnowszą wersję.
Obsługa Cisco (TAC) nie obsługuje debugowania kodu innych firm, w tym makr. Sprawdźhttps://roomos.cisco.com jeśli potrzebujesz pomocy z makrami i kodem innych firm.