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 HttpClient > Tryb na Wł. (xConfiguration HttpClient Mode: On).

  • Administrator systemu może uniemożliwić korzystanie z HTTP ustawiając HttpClient > AllowHTTP 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ć HttpClient > AllowInsecureHTTPS na Wł. (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:

  • 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ż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.