En utilisant des macros, vous pouvez envoyer les données à un(S) serveur HTTP dès que vous le souhaitez. Vous pouvez choisir quelles données envoyer et les structurer selon votre choix. De cette façon, vous pouvez adapter les données à un service déjà établi.

Mesures de sécurité :

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

  • L’administrateur du système peut empêcher l’utilisation de HTTP en paramètres httpClient > AutoriserHTTP sur False (Faux) ( xConfiguration HttpClient AllowHTTP: False ).

  • 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 la xCommand HttpClient Allow Hostname des commandes))

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

Les configurations référables dans cet article sont disponibles à la fois dans l’interface Web du périphérique et dans l’API. Les commandes sont disponibles dans 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) :

  • xCommand HttpClient Allow Hostname Add Expression: <Regular expression that matches the host name or IP address of the HTTP(S) server>

  • xCommand HttpClient Allow Hostname Clear

  • xCommand HttpClient Allow Hostname List

  • xCommand HttpClient Allow Hostname Remove Id: <id of an entry in the list>

Si la liste n’est pas vide, vous pouvez envoyer des demandes HTTP(S) uniquement aux serveurs de la liste. Si la liste est vide, vous pouvez envoyer les 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 du 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 du système peut configurer httpclient > AllowInsecureHTTPS à On (). xConfiguration HttpClient AllowInsecureHTTPS: On ). Ceci permet l’utilisation de HTTPS sans validation du certificat du serveur.

Envoi de requêtes HTTP(S)

Lorsque la fonctionnalité de demande du client HTTP(S) est activée, vous pouvez utiliser les commandes suivantes pour envoyer des demandes à un serveur HTTP(S). <method> est soit Post , Put , Patch , Get , ou Delete .

  • xCommand HttpClient <Method> [AllowInsecureHTTPS: <True/False>] [Header: <Header text>] [ResponseSizeLimit: <Maximum response size>] [ResultBody: <None/PlainText/Base64>] [Timeout: <Timeout period>] Url: <URL to send the request to>

Ajouter des champs d’en-tête est facultatif, mais vous pouvez ajouter jusqu’à 20 champs.

Le AllowInsecureHTTPS a un effet uniquement si l’administrateur du système a autorisé l’utilisation de HTTPS sans valider le certificat du serveur. Si c’est le cas, vous pouvez envoyer les données au serveur sans avoir à valider le certificat du serveur si le paramètre est paramété sur True . Si vous laissez le paramètre en dehors d’un paramètre ou le paramétez sur False , les données ne sont pas envoyées si la validation du certificat échoue.

Le ResposenSizeLimit est la taille maximum de charge utile (octets) que le périphérique accepte en tant que 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 les flèches ResultBody pour décider comment formater le corps de la réponse HTTP du serveur dans le résultat de la commande. Vous avez trois options :

  • None : 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.

  • PlainText : Inclure le corps dans le résultat en texte simple. Si la réponse contient des lettres non imprimables, la commande renvoie une erreur de statut avec un message disant que des données non imprimables ont été rencontrées.

Utilisez les flèches Timeout pour paraméer une période d’attente (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 :


     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 en utilisant 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 : Poster des données dans un outil de contrôle en utilisant la publication HTTP


     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"} . 
   

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 la Communauté des développeurs de collaboration Cisco si vous avez besoin d’aide avec les macros et le code tiers. De plus, il existe un grand nombre de ressources développeurs et intégrateurs sur ce site.