Accueil > Forum > Programmation IEC 61131 (LogicLab) > Nouveau FB HTTPClient publié
marqués: HTTPClient
- Ce sujet a 9 réponses, 3 participants et a été mis à jour pour la dernière fois 4 années, 6 mois da Rubox.
-
auteurPost
-
Mai 10, 2018 à 4: pm 04 #44043Sergio BertanaAdministrateur du forum
Le FB HTTPGetPage a évolué pour devenir un vrai client HTTP, nous avons donc changé son nom pour HTTPClient (Extrait manuel). La possibilité a été ajoutée d'envoyer des paramètres à la fois en GET et en POST et de recevoir des pages de n'importe quelle longueur en réponse Dans le cas de très grandes pages, les données de page reçues peuvent également être transférées dans un fichier.
Je joins un exemple de programme au sujet (Télécharger) avec le nouveau FB, dans l'exemple la requête est faite d'une page sur le site Altervista, le programme passe en GET ou POST les paramètres Dividend et Divisor à un script PHP qui effectue la division entre les valeurs passées. Il est possible de tester directement le fonctionnement du script d'ici. Si le script est actif, une page est renvoyée avec: Le résultat est: 50.
Il est évident que vous pouvez tester le script en modifiant les valeurs de l'adresse du navigateur pour obtenir des résultats différents. Le but du FB est précisément ce soutien du programme SlimLine sur un service Web dans le nuage pour effectuer des opérations.
Juin 25, 2019 à 2: pm 29 #48327MarcelloPartecipanteJ'utilise avec succès le FB HTTPClient et maintenant que je l'apprécie, j'aimerais pouvoir utiliser ce FB pour configurer via des appareils HTTP connectés au réseau, notamment pour changer l'adresse IP, définir les paramètres etc ... J'ai demandé à l'un de nos fournisseurs le commandes pour changer l'adresse IP de certaines sondes (KMTronic) et ils m'ont envoyé cette série de commandes (y compris celle de redémarrage).
Cambio IP:
POST /net_config.htm HTTP / 1.1
Hôte: 192.168.1.199
Connection: keep-alive
Content-Length: 57
Cache-Control: max-age = 0
Autorisation: base YWRtaW46YWRtaW4 =
Origine: http://192.168.1.199
Requêtes non sécurisées de mise à niveau: 1
Type de contenu: application / x-www-form-urlencoded
Agent utilisateur: Mozilla / 5.0 (10.0 sous Windows NT; Win64; x64) AppleWebKit / 537.36 (KHTML, comme Gecko) Chrome / 75.0.3770.100 Safari / 537.36
Accepter: text / html, application / xhtml + xml, application / xml; q = 0.9, image / webp, image / apng, * / *; q = 0.8, application / échangé-signé; v = b3
Referer: http://192.168.1.198/net_config.htm
Accept-Encoding: gzip, deflate
Accepter-Langue: en-US, en; q = 0.9, bg; q = 0.8
ip = 192.168.1.190 & gw = 192.168.1.1 & sub = 255.255.255.0 & htpt = 80Reboot:
GET /reboot.cgi HTTP / 1.1 r Autorisation: de base, YWRtaW46YWRtaW4 = r Accepter: * / * r n \ t
J'ai configuré le FB comme ceci:
Cambio IP:
Méthode: 1
HostAddress: 192.168.1.199
Hostname: 192.168.1.198
Hostport: 80
Page: net_config.htm HTTP / 1.1
Demande: ip = 192.168.1.190 & gw = 192.168.1.1 & sub = 255.255.255.0 & htpt = 80
DBSize: 57Reboot:
Méthode: 0
HostAddress: 192.168.1.199
Hostname: 192.168.1.198
Hostport: 80
Page: reboot.cgi HTTP / 1.1
Requête: nAuthorization: Basic YWRtaW46YWRtaW4 = r Accepter: * / * r n
DBSize: 61Ai-je bien "traduit"?
Juin 25, 2019 à 3: pm 14 #48330Sergio BertanaAdministrateur du forumJe vois des idées confuses ...
La demande de jeux de paramètres est une demande dans POST, donc Method: 1 est correct, mais HostAddress e HostName ils doivent être l'adresse IP du serveur ils ne peuvent pas être différents ... à la limite HostName pourrait être le nom d'hôte dans le cas de serveurs multidomaines.
In Page il suffit de mettre la page HTPP / 1.1 automatiquement dans le FB.
Dans Demande, vous mettez correctement les données requises, mais DBSize le fait beaucoup plus gros (Metterei 1000).
Je vois dans l'exemple que le champ est mentionné Authorization: Basic YWRtaW46YWRtaW4=, cela me semble être un champ à passer dans l'en-tête de la requête pour activer la commande de paramétrage. Puis passez au paramètre Header:=ADR(Authorization: Basic YWRtaW46YWRtaW4=).
Le reste semble être OK, mais je vous suggère d’essayer la commande avec des programmes comme Insomnie o Facteur, et lorsque la commande fonctionne, elle espionne avec Wireshark ce qui se passe afin qu'il puisse être comparé à ce que le FB HTTPClient génère.
Plus simple est la commande de redémarrage, une simple commande GET
Méthode: 0
HostAddress: 192.168.1.199
Hostname: 192.168.1.199
Hostport: 80
Page: reboot.cgi
Demande: Autorisation: Base YWRtaW46YWRtaW4 =June 26, 2019 à 6: 55 am #48336MarcelloPartecipanteSur le FB, je ne vois pas le paramètre Header, mon HTTPClient je l'ai obtenu de la bibliothèque eLLabNetworkLib_B210.plclib.
June 26, 2019 à 6: 56 am #48338Sergio BertanaAdministrateur du forumJ'ai publié la nouvelle version de la bibliothèque que vous pouvez télécharger à partir de la section de téléchargement.
Octobre 19, 2019 à 7: 09 am #50230RuboxPartecipanteBonjour, j'ai téléchargé la bibliothèque eLLabNetworkLib_B300 depuis la section téléchargement. J'importe le FB HTTPClient_v1 dans LogicLab et si je compile tout, j'obtiens une erreur eLLabNetworkLib_B300.plclib (938) error C002: LD => Jeton invalide.
Si je supprime le FB du projet, compilez sans erreur. Où est-ce que je me trompe?
Octobre 19, 2019 à 7: 11 am #50234Sergio BertanaAdministrateur du forumIl semble que vous ayez défini une variable avec le nom "LD" ou quelque chose de similaire, pour comprendre que vous devez envoyer votre projet Logiclab à notre courrier de support afin que nous puissions vérifier directement pour comprendre l'erreur.
Octobre 21, 2019 à 6: 47 am #50258RuboxPartecipanteBonsoir, mon problème c'est qu'il suffit que je définisse un nouveau projet vide, que j'importe le FB HTTPClient, que je crée un programme minimal en définissant une variable "a" et en lui attribuant une valeur arbitraire (donc une seule ligne de programme de type a: = 0 ;) et en compilant dans LogicLab, j'obtiens cette erreur, même sans définir une variable de type HTTPClient.
Si j'importe les autres FB de la bibliothèque dans le même projet, il n'y a pas d'erreur, si j'importe HTTPClient cela me donne l'erreur. Et je ne sais pas comment y remédier, ni où je me trompe.
Octobre 21, 2019 à 6: 55 am #50265Sergio BertanaAdministrateur du forumVotre problème vient du fait que vous n'avez pas mis le contrôle sur le respect du cas dans le projet, par défaut LogicLab le laisse inactif, vous devez le vérifier manuellement. Vous trouverez une indication comme celle-ci dans de nombreux messages du forum.
La coche devrait toujours être activée dans le projet Sensibilité à la casse, dans le menu Projet-> Options (Capture d'écran). De cette façon, la casse des lettres est cochée dans les noms de variables et de fonctions en évitant de donner des noms à des variables pouvant contraster avec des noms déjà prédéfinis.
Ensuite, si vous voulez un exemple complet d'utilisation, vous pouvez vous référer à connaissance relative.
Octobre 22, 2019 à 12: pm 18 #50297RuboxPartecipanteBonjour, merci d'avoir résolu mon erreur: je me suis cogné la tête pendant deux jours sans qu'il m'est venu à l'esprit que le respect des majuscules / minuscules pouvait provoquer cette erreur.
Maintenant construis-moi sans problèmes et la chose la plus importante est que cela fonctionne.
-
auteurPost
- Vous devez être connecté pour répondre à ce sujet.