Mit Makros können Sie bei Bedarf Daten an einen HTTP(S)-Server senden. Sie haben die Kontrolle darüber, welche Daten gesendet werden und wie sie organisiert sind, sodass es einfach ist, die Daten für die Verwendung mit bestehenden Diensten anzupassen.
Sicherheitsmaßnahmen:
-
Die ANFORDERUNGsfunktion für den HTTP(S)-Client ist standardmäßig deaktiviert. Ein Systemadministrator muss die Funktion explizit aktivieren, indem er
auf Ein (xConfiguration HttpClient Mode: Am
). -
Der Systemadministrator kann die Verwendung von HTTP verhindern, indem er
auf False (xConfiguration HttpClient AllowHTTP: Falsch
). -
Der Systemadministrator kann eine Liste der HTTP(S)-Server angeben, an die das Gerät Daten senden darf. (Siehe die Befehle
xCommand HttpClient Hostname zulassen
.) -
Die Anzahl der gleichzeitigen HTTP(S)-Anfragen ist begrenzt.
Die in diesem Artikel genannten Konfigurationen sind sowohl über die Weboberfläche des Geräts als auch über die API verfügbar. Die Befehle sind über die API verfügbar. Lesen Sie den Artikel Erweiterte Einstellungen, um zu erfahren, wie Sie auf die Weboberfläche zugreifen und die API verwenden können.
Liste zulässiger HTTP(S)-Server
Der Systemadministrator kann mithilfe dieser Befehle bis zu zehn erlaubte HTTP(S)-Server (Hosts) einrichten und verwalten:
-
xCommand HttpClient Hostname zulassen Ausdruck hinzufügen:
-
xCommand httpclient zulassen, dass Hostname gelöscht wird
-
xCommand httpclient Hostname-Liste zulassen
-
xCommand HttpClient Hostnamen-Id entfernen zulassen:
Wenn die Liste Servereinträge enthält, können Sie nur HTTP(S)-Anfragen an diese Server senden. Wenn die Liste jedoch leer ist, können Sie Anforderungen an einen beliebigen HTTP(S)-Server senden.
Die Überprüfung der Liste zulässiger Server wird sowohl bei unsicherer (HTTP) als auch bei sicherer (HTTPS) Datenübertragung durchgeführt.
HTTPS ohne Zertifikatsüberprüfung
Wenn Anfragen über HTTPS gesendet werden, überprüft das Gerät standardmäßig das Zertifikat des HTTPS-Servers. Wenn das HTTPS-Serverzertifikat nicht gültig ist, erhalten Sie eine Fehlermeldung. Das Gerät sendet keine Daten an diesen Server.
Wir empfehlen die Verwendung von HTTPS für die Zertifikatvalidierung. Wenn die Zertifikatsüberprüfung nicht möglich ist, kann der Systemadministrator xConfiguration HttpClient AllowInsecureHTTPS: Am
). Dies ermöglicht die Verwendung von HTTPS, ohne das Zertifikat des Servers zu validieren.
Senden von HTTP(S)-Anfragen
Sobald die HTTP(S)-Client-Anfragefunktion aktiviert ist, können Sie die folgenden Befehle verwenden, um Anfragen an einen HTTP(S)-Server zu senden.
ist entweder Post
, Put
, Patch
, Get
oder Delete
.
-
xCommand HttpClient [AllowInsecureHTTPS: ] [Kopfzeile: ] [ResponseSizeLimit: ] [ResultBody: ] [Timeout: ] Url:
Das Hinzufügen von Kopfzeilenfeldern ist optional und Sie können bis zu 20 Felder hinzufügen.
Der Parameter AllowInsecureHTTPS
hat nur Wirkung, wenn der Systemadministrator die Verwendung von HTTPS ohne Überprüfung des Serverzertifikats zugelassen hat. Wenn dies der Fall ist, können Sie Daten an den Server senden, ohne das Serverzertifikat zu überprüfen, wenn der Parameter auf True
gesetzt ist. Wenn Sie den Parameter auslassen oder ihn auf False
setzen, werden keine Daten gesendet, wenn die Zertifikatsüberprüfung fehlschlägt.
Der Parameter ResposenSizeLimit
ist die maximale Nutzlastgröße (Byte), die das Gerät als Antwort vom Server akzeptiert. Wenn die Antwort-Nutzlast größer ist als diese maximale Größe, gibt der Befehl einen Statusfehler zurück. Die maximale Dateigröße wird in der Fehlermeldung überschritten. Dies wirkt sich jedoch nicht auf die Serverseite aus; der Server hat die Anforderung ordnungsgemäß empfangen und verarbeitet.
Verwenden Sie den Parameter ResultBody
, um zu entscheiden, wie der Text der HTTP-Antwort vom Server im Befehlsergebnis formatiert werden soll. Sie haben drei Möglichkeiten:
-
Keine
: Fügen Sie den Text der HTTP-Antwort nicht in das Befehls Ergebnis ein. -
Base64
: Base64 codieren Sie den Text, bevor Sie ihn in das Ergebnis Einfügen. -
PlainText
: Fügen Sie den Text in das Ergebnis als Klartext ein. Wenn die Antwort nicht druckbare Buchstaben enthält, gibt der Befehl einen Status Fehler zurück, in dem die Meldung angezeigt wird, dass nicht druckbare Daten gefunden wurden.
Verwenden Sie den Parameter Zeitüberschreitung
, um einen Zeitraum für die Zeitüberschreitung (Sekunden) festzulegen. Wenn die Anforderung während dieses Zeitraums nicht abgeschlossen wird, gibt die API einen Fehler zurück.
Geben Sie die Nutzlast (Daten) direkt nach der Befehlsaufforderung ein. Alles, was Sie eingeben, einschließlich Zeilenumbrüche, ist Bestandteil der Nutzlast. Wenn Sie fertig sind, schließen Sie eine Leitungspause ("\n") und eine separate Zeile ab, die nur einen Zeitraum enthält, gefolgt von einer Leitungspause (".\n"). Jetzt wird der Befehl ausgeführt und die Daten werden an den Server gesendet.
Beispiele
Der Text der Nachricht ist JSON in beiden Beispielen. Je nach dem erwarteten Format des Diensts, der die Nachrichten empfängt, kann es sich um ein beliebiges Format handelt.
Beispiel 1: IoT-Gerätesteuerung mit HTTP Post
Dies ist eine Makrofunktion, die ein Licht ein aktiviert, das mit einer Farbfarbenbrücke verbunden ist:
function hue_command(Daten) { var url = 'http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state'; var header = 'Inhaltstyp: Anwendung/JSON '; var Command = ' {' on ": true} '; XAPI. Befehl (' httpclient Put ', {' URL ': URL, ' Kopfzeile ': Header}, Befehl); }
Sie können dasselbe an der Befehlszeile mit der API ausführen:
xcommand HttpClient Put Header: "Inhaltstyp: application/json"-URL: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} .
Beispiel 2: Posten von Daten in ein Überwachungstool mithilfe von HTTP Post
xcommand HttpClient-Post-Header: "Inhaltstyp: application/json" URL: "https://mymonitoringserver.com/service/devicemonitoring" {"Message":"Ein Benutzer hat ein Problem mit diesem System gemeldet","systemName":"BoardRoom 4th floor","softwareVersion":"ce9.6.0","softwareReleaseDate":"2018-12-13","videoMonitors":"Dual"}.
Weitere Informationen
Weitere Informationen zur Verwendung von HTTP-Client-Anforderungen finden Sie im Customization Guide . Wählen Sie die aktuelle Version.
Cisco-Support (TAC) unterstützt kein Debugging von Drittanbietercode, einschließlich Makros. Überprüfen Sie, https://roomos.cisco.com ob Sie Hilfe bei Makros und Drittanbietercodes benötigen.