Avec les macros, vous pouvez envoyer des données à un serveur HTTP (S) chaque fois que vous en avez besoin. Vous pouvez contrôler quelles données sont envoyées et comment elles sont organisées, ce qui permet de les adapter facilement aux services existants.
Mesures de sécurité :
-
La fonction de demande du client HTTP (S) est désactivée par défaut. Un administrateur système doit activer cette fonctionnalité de manière explicite en réglant sur Activé (
Mode XConfiguration HttpClient :Activé). -
L'administrateur système peut empêcher l'utilisation du HTTP en attribuant à : False).
-
L'administrateur système peut spécifier une liste de serveurs HTTP (S) auxquels l'appareil est autorisé à envoyer des données. (Voir les
commandes XCommand HttpClient Allow Hostname.) -
Le nombre de requêtes HTTP (S) simultanées est limité.
Les configurations mentionnées dans cet article sont disponibles à la fois depuis l'interface Web de l'appareil et depuis l'API. Les commandes sont disponibles via l'API. Lisez l'article sur les paramètres avancés pour savoir comment accéder à l'interface Web et utiliser l'API.
Liste des serveurs HTTP (S) autorisés
L'administrateur système peut utiliser ces commandes pour configurer et gérer une liste de dix serveurs HTTP (S) (hôtes) autorisés :
-
XCommand HttpClient Autoriser le nom d'hôte Ajouter une expression :<Regular expression that matches the host name or IP address of the HTTP (S) server> -
XCommand HttpClient Autoriser le nom d'hôte Effacer -
Liste des noms d'hôtes autorisés XCommand HttpClient -
XCommand HttpClient Autoriser le nom d'hôte Supprimer l'identifiant :<id of an entry in the list>
Si la liste contient des entrées de serveurs, vous ne pouvez envoyer des requêtes HTTP (S) qu'à ces serveurs. Cependant, si la liste est vide, vous pouvez envoyer des requêtes à n'importe quel serveur HTTP (S).
La vérification par rapport à la liste des serveurs autorisés est effectuée à la fois lors d'un transfert de données non sécurisé (HTTP) et sécurisé (HTTPS).
HTTPS sans validation de certificat
Lors de l'envoi de demandes via HTTPS, l'appareil vérifie le certificat du serveur HTTPS par défaut. Si le certificat du serveur HTTPS n'est pas valide, vous recevez un message d'erreur. L'appareil n'envoie aucune donnée à ce serveur.
Nous vous recommandons d'utiliser le protocole HTTPS pour valider les certificats. Si la validation du certificat n'est pas possible, l'administrateur système peut définir : On). Cela permet d'utiliser le HTTPS sans valider le certificat du serveur.
Envoi de requêtes HTTP (S)
Une fois la fonction de demande du client HTTP (S) activée, vous pouvez utiliser les commandes suivantes pour envoyer des requêtes à un serveur HTTP (S).
<method>c'est soit
Publier
,
,
Publier
Patcher
,
Obtenir, soit
Supprimer
.
-
XCommand HttpClient [AllowInsecureHttps :] [En-tête :] [ResponseSizeLimit :] [ResultBody :] [Délai d'attente :] URL :<Method><True/False> <Header text><Maximum response size><None/PlainText/Base64> <Timeout period><URL to send the request to>
L'ajout de champs d'en-tête est facultatif, et vous pouvez en ajouter jusqu'à 20.
Le
paramètre
AllowInsecureHTTPS n'a d'effet que si l'administrateur système a autorisé l'utilisation du HTTPS sans valider le certificat du serveur. Si c'est le cas, vous pouvez envoyer des données au serveur sans valider le certificat du serveur si le paramètre est défini sur
True
. Si vous omettez le paramètre ou si vous le définissez sur
False
, aucune donnée ne sera envoyée en cas d'échec de la validation du certificat.
Le
paramètre
RespoSensizeLimit est la taille maximale de la charge utile (octets) que l'appareil accepte en tant que réponse depuis le serveur. Si la charge utile de réponse est supérieure à cette taille maximale, la commande renvoie une erreur de statut. Le message d'erreur indique que la taille maximale du fichier est dépassée. Cependant, cela n'a aucun effet côté serveur ; le serveur a reçu et traité la demande correctement.
Utilisez le
paramètre
ResultBody pour décider comment mettre en forme le corps de la réponse HTTP du serveur dans le résultat de la commande. Trois options s'offrent à vous :
-
Aucune: n'incluez pas le corps de la réponse HTTP dans le résultat de la commande. -
Base64: code le corps en Base64 avant de l'inclure dans le résultat. -
Texte en clair: incluez le corps du résultat en texte brut. Si la réponse contient des lettres non imprimables, la commande renvoie une erreur de statut avec un message indiquant que des données non imprimables ont été détectées.
Utilisez le
paramètre
Timeout pour définir un délai d'attente (secondes). Si la demande n'est pas traitée pendant cette période, l'API renvoie un message d'erreur.
Entrez la charge utile (données) juste après avoir émis la commande. Tout ce que vous saisissez, y compris les sauts de ligne, fait partie de la charge utile. Quand vous avez terminé, terminez par un saut de ligne («\n») et une ligne séparée contenant juste un point suivi d'un saut de ligne (». \n»). Maintenant, la commande est exécutée et les données sont envoyées au serveur.
Exemples
Le corps du message est au format JSON dans ces deux exemples. Il peut s'agir de n'importe quel format, selon le format attendu du service qui reçoit les messages.
Exemple 1 : contrôle des appareils IoT à l'aide de HTTP Post
Voici une fonction macro qui allume une lampe connectée à un pont 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); }
Vous pouvez faire de même sur la ligne de commande à l'aide de l'API :
xcommand HttpClient Put Header: "Content-Type: application/json" URL: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} .
Exemple 2 : Publication de données sur un outil de surveillance à l'aide de 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"} .
Plus d'informations
Pour en savoir plus sur l'utilisation des requêtes des clients HTTP, consultez le guide de personnalisation . Choisissez la dernière version.
Le support Cisco (TAC) ne prend pas en charge le débogage du code tiers, y compris des macros. Consultez https://roomos.cisco.com si vous avez besoin d'aide concernant les macros et le code tiers.