Avec les macros, vous pouvez envoyer des données vers 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 vous permet d'adapter facilement les données pour les utiliser avec les services existants.

Mesures de sécurité :

  • La fonctionnalité de demande du client HTTP(S) est désactivée par défaut. Un administrateur système doit activer explicitement la fonctionnalité en configurant HttpClient > Mode sur Activé ( xConfiguration HttpClient Mode : Le ).

  • L'administrateur système peut empêcher l'utilisation de HTTP en configurant HttpClient > AllowHTTP sur False ( xConfiguration HttpClient AllowHTTP: Faux ).

  • L’administrateur du système peut spécifier une liste de serveurs HTTP(S) à qui le périphérique est autorisé à envoyer des données. (Voir les commandes xCommand HttpClient Autoriser le nom d'hôte .)

  • Le nombre de requêtes HTTP(S) simultanées est limité.

Les configurations mentionnées dans cet article sont disponibles à la fois à partir de l'interface web du périphérique et dans l'API. Les commandes sont disponibles via l'API. Lisez l’article Paramètres avancés pour trouver des informations sur la façon d’accéder à l’interface Web et d’utiliser l’API.

Liste des serveurs HTTP(S) autorisés

L’administrateur du système peut utiliser ces commandes pour configurer et conserver une liste de dix serveurs HTTP(S) autorisés (hôtes) :

  • xCommande HttpClient Autoriser le nom d'hôte Ajouter une expression :

  • xCommand HttpClient autoriser l’effacement du nom d’hôte

  • xCommand HttpClient autoriser la liste des noms d’hôte

  • xCommande HttpClient Autoriser le nom d’hôte Supprimer l’ID :

Si la liste contient des entrées de serveur, vous pouvez envoyer uniquement des requêtes HTTP(S) à ces serveurs. Toutefois, si la liste est vide, vous pouvez envoyer des demandes à n'importe quel serveur HTTP(S).

La vérification de 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 des demandes sur HTTPS, le périphérique 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. Le périphérique n’envoie aucune donnée vers ce serveur.

Nous vous recommandons d’utiliser HTTPS avec validation du certificat. Si la validation du certificat n'est pas possible, l'administrateur système peut configurer HttpClient > AllowInsecureHTTPS sur On ( xConfiguration HttpClient AllowInsecureHTTPS: Le ). Ceci permet l’utilisation de HTTPS sans validation du certificat du serveur.

Envoi de demandes HTTP(S)

Une fois que la fonctionnalité de demande du client HTTP(S) est activée, vous pouvez utiliser les commandes suivantes pour envoyer les demandes à un serveur HTTP(S). est soit Poster , Mettre , Patch , Obtenir , soit Supprimer .

  • xCommand HttpClient [AllowInsecureHTTPS: ] [En-tête : ] [ResponseSizeLimit : ] [ResultBody : ] [Timeout : ] Url :

L'ajout de champs d'en-tête est facultatif et vous pouvez ajouter jusqu'à 20 champs.

Le paramètre AllowInsecureHTTPS n'a d'effet que si l'administrateur système a autorisé l'utilisation de HTTPS sans valider le certificat du serveur. Si tel 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 Vrai . Si vous laissez le paramètre vide, ou le configurez sur Faux, les données ne sont pas envoyées si la validation du certificat échoue.

Le paramètre ResposenSizeLimit est la taille maximale de la charge utile (octets) que le périphérique accepte comme réponse du serveur. Si la charge utile de la réponse est supérieure à cette taille maximum, la commande renvoie une erreur de statut. Le message d’erreur indique que la taille maximum de fichier a été dépassée. Cependant, cela n’a aucun effet du côté du serveur ; le serveur a reçu et a correctement traitée la demande.

Utilisez le paramètre ResultBody pour décider comment formater le corps de la réponse HTTP à partir du serveur dans le résultat de la commande. Vous avez trois options :

  • Aucun : N’incluez pas le corps de la réponse HTTP dans le résultat de la commande.

  • Base64 : Base64 encode le corps avant de l’inclure dans le résultat.

  • Texte simple : Incluez le corps dans le résultat en tant que texte simple. 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é rencontrées.

Utilisez le paramètre Délai d'expiration pour définir un délai d'expiration (secondes). Si la demande n’est pas terminée au cours de cette période, l’API renvoie une erreur.

Saisissez la charge utile (données) immédiatement après avoir émis la commande. Tout ce que vous saisissez, y compris les interruptions de ligne, fait partie de la charge utile. Lorsque vous avez terminé, terminez par une pause de ligne (« \ n ») et une ligne séparée contenant uniquement une période suivie d’une pause de ligne (« .\n »). La commande est maintenant exécutée et les données sont envoyées au serveur.

Exemples

Le corps du message est JSON dans les deux exemples suivants. Il peut s’agit d’un format n’importe quel format, selon le format attendu du service qui reçoit les messages.

Exemple 1 : Contrôle du périphérique IoT à l’aide de la publication HTTP

Voici une fonction macro qui allume un clair qui est connecté à un pont de nuances Bonnets :

 fonction hue_command(données) { var url = 'http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state'; var en-têtes = 'Type de contenu : application/JSON» commande var = ' {"on": true} '; XAPI. Command («HttpClient put», {«URL»: URL, «en-tête»: en-têtes}, commande); } 

Vous pouvez faire la même chose sur la ligne de commande à l’aide de l’API:

 xcommand HttpClient Put En-tête : « Type de contenu : URL application/json » : « http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {« on »:true} 
.

Exemple 2 : Poster des données dans un outil de contrôle en utilisant la publication HTTP

 xcommand HttpClient Post En-tête : « Type de contenu : application/json » URL : « https://mymonitoringserver.com/service/devicemonitoring" {« Message »: « Un utilisateur a signalé un problème avec ce système », « systemName » : « BoardRoom 4th floor », « softwareVersion » : « ce9.6.0 », « softwareReleaseDate » : « 2018-12-13 », « videoMonitors » : « Dual »}. 

Informations complémentaires

Pour plus d’informations sur l’utilisation des demandes du client HTTP, consultez le guide de personnalisation. Sélectionnez la dernière version.

L’assistance Cisco (CAT) ne prend pas en charge le débogage des codes tiers, y compris les macros. Veuillez vérifier https://roomos.cisco.com si vous avez besoin d'aide sur les macros et le code de fabricants tiers.