Używając makr, możesz wysyłać dane do serwera HTTP(S) kiedy tylko chcesz. Możesz wybrać, jakie dane mają być wysyłane i nadać im dowolną strukturę. W ten sposób można dostosować dane do już istniejącej usługi.

Ś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 HTTP(S), do których urządzenie może wysyłać dane. (Zobacz komendy xCommand HttpClient Allow Hostname).

  • Liczba jednoczesnych żądań HTTP(S) jest ograniczona.

Konfiguracje, o których mowa w tym artykule, dostępne są zarówno z poziomu interfejsu webowego urządzenia, jak i w API. Polecenia są dostępne w 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(S)

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, które pasuje do nazwy hosta lub adresu IP serwera HTTP(S)>

  • xCommand HttpClient Allow Hostname Clear

  • xCommand HttpClient Allow Hostname List

  • xCommand HttpClient Allow Hostname Remove Id: <id wpisu na liście>

Jeśli lista nie jest pusta, możesz wysyłać żądania HTTP(S) tylko do serwerów znajdujących się na liście. Jeśli lista jest pusta, możesz wysyłać żądania do dowolnego serwera HTTP(S).

Sprawdzenie listy dozwolonych serwerów odbywa się zarówno przy niezabezpieczonym (HTTP) jak i bezpiecznym (HTTPS) przesyłaniu danych.

HTTPS bez walidacji 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(S)

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 <Method> [AllowInsecureHTTPS: <True/False>] [Header: <tekst nagłówka>] [ResponseSizeLimit: <Maksymalny rozmiar odpowiedzi>] [ResultBody: <None/PlainText/Base64>] [Timeout: <czas limitu>] Url: <URL wysłanego żądania>

Dodanie pól nagłówka jest opcjonalne, ale możesz dodać aż 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: zakoduj ciało w Base64 przed włączeniem go do wyniku.

  • PlainText: Dołącz ciało 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: Sterowanie urządzeniami IoT za pomocą 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" 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"}
.

Więcej informacji

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. Jeśli potrzebujesz pomocy z makrami i kodem innych firm, sprawdź społeczność Cisco Collaboration Developer. Ponadto na tej stronie znajduje się wiele zasobów dla deweloperów i integratorów.