Avec 4D v19R6, nous vous avons apporté une nouvelle façon d’effectuer des requêtes HTTP : les classes HTTP. A l’époque, certaines des fonctionnalités des classes HTTP n’étaient pas finalisées, car nous voulions les adapter à la nouvelle syntaxe. C’est maintenant chose faite ! Dans la v19R7, les fonctionnalités de réponses compressées, de réponses en morceaux et de redirections sont désormais complètes.
En bonus, nous avons également ajouté une nouvelle façon d’enregistrer les requêtes HTTP. Et comme il est utile pour tout le monde, cette nouvelle journalisation est disponible pour les nouvelles classes HTTP ainsi que pour l’ancienne syntaxe.
Tout d’abord, permettez-moi de parler des fonctionnalités des classes HTTP. Nous avons rapporté et adapté le fonctionnement de l’ancienne syntaxe pour l’adapter à la nouvelle syntaxe. Nous avons inclus la plupart de ses fonctionnalités, à savoir les HTTP, l’authentification du proxy et du serveur, les redirections, les réponses en bloc et les réponses compressées. Nous avons également ajouté quelques fonctionnalités, comme la possibilité d’annuler une requête ou la nouvelle journalisation des requêtes des clients HTTP (j’y viendrai dans le paragraphe suivant). La dernière fonctionnalité que nous devons signaler dans la nouvelle syntaxe est la persistance de la connexion par le biais d’un keep-alive : elle viendra bientôt à l’intérieur d’une fonctionnalité beaucoup plus importante… que je vous expliquerai dans un autre billet de blog. Restez à l’écoute !
Maintenant, parlons de la nouvelle journalisation du client HTTP disponible dans la v19R7.
L’activation de la journalisation du client HTTP est extrêmement simple ; il suffit d’ajouter cette ligne à votre code :
HTTP SET OPTION(HTTP client log; HTTP enable log with all body parts)
Et c’est tout ! Toutes vos demandes et réponses seront enregistrées dans le fichier 4DHTTPClientLog_x.txt dans le répertoire Logs avec le même format que les journaux du serveur.
Bien sûr, vous pouvez enregistrer entièrement les demandes et les réponses, mais si vous ne voulez pas que vos fichiers journaux soient encombrés de longues réponses, vous pouvez supprimer les corps des réponses et même les corps des demandes. La syntaxe est extrêmement proche de l’activation du journal du serveur, vous ne serez donc pas surpris.
Enfin, voici un exemple d’une requête et de sa réponse (sans leur corps) enregistrées dans le fichier journal du client HTTP :
# REQUEST # SequenceID: 7 # ConnectionID: DDF30D20070B0848B455971A0D627ED6 # LocalIP: 192.168.18.11:52097 # PeerIP: 192.168.4.7:3128 # TimeStamp: -1607148967 GET http://www.4d.com:80/ HTTP/1.1 Accept-Encoding: gzip, deflate Connection: Close Content-Length: 4 Content-Type: text/plain; charset=UTF-8 Date: Fri, 23 Sep 2022 09:30:58 GMT Host: www.google.com User-Agent: 4D_HTTP_Client/0. [Body Size: 4] # RESPONSE # SequenceID: 6 # ConnectionID: 8EA22B111F16B04B92966DEFAA22704F # LocalIP: 192.168.18.11:52090 # PeerIP: 192.168.4.7:3128 # TimeStamp: -1607191491 # ElapsedTimeInMs: 154 HTTP/1.1 200 OK Cache-Control: private, max-age=0 Connection: close Content-Encoding: gzip Content-Length: 6185 Content-Type: text/html; charset=ISO-8859-1 Date: Fri, 23 Sep 2022 09:30:16 GMT Expires: -1 Via: 1.1 proxy-squid (squid/3.5.27) [Body Size: 6185]
Si vous avez des commentaires concernant cette nouvelle fonctionnalité, n’hésitez pas à les partager avec nous sur le forum officiel de 4D.