Pour une extension Emacs, je souhaite récupérer des données via HTTP. Je ne suis pas particulièrement friand de l'idée de bombarder des choses comme , curl
, ou w3m
pour pouvoir le faire, alors j'utilise la fonction url-retrieve
.Décodage de corps de réponse gzip-ed avec url-retrieve
L'un des serveurs HTTP que je parle arrive à ignorer Accept-Encoding
en-têtes et insiste pour toujours envoyer ses données avec Content-Encoding: gzip
. En conséquence de cela, et du fait que url-retrieve
ne décode pas automatiquement les corps de réponse, le tampon url-retrieve
me présentera des données gzip binaires.
Je suis à la recherche d'un moyen de décoder le corps de la réponse, de préférence fragment par bloc, au fur et à mesure que les données arrivent. Y at-il un moyen d'instruire url-retrieve
de le faire pour moi? Décoder la réponse en même temps, une fois complètement arrivé, serait également acceptable, mais je préfère éviter tout fubar impliqué dans la création d'un sous-processus asynchrone exécutant gzip, en redirigeant des parties de la réponse que j'ai eues vers ça, et lisant les morceaux décodés - je chercherais une fonction de bibliothèque ici.
Emacs a évidemment intégré gzip, car vous pouvez ouvrir des fichiers gzip, les éditer et les sauvegarder de façon transparente. La question est ... où est ce crochet, et la réponse n'est pas évidente. – jrockway
Merci, John. Bien que je sois conscient de pouvoir ouvrir des fichiers gzippés, il ne m'a pas vraiment semblé que cela puisse être lié, mais c'est évidemment le cas. De l'ouverture d'un fichier .gz sur le disque, en regardant '* Messages *', et en cherchant dans mes répertoires elisp pour tout ce que j'ai, j'ai trouvé le code implémentant c'est 'jka-cmpr-hook.el' et/ou' jka- compr.el'. Il semble probable que ce problème est facile à résoudre avec une fois des fonctions fournies par ceux-ci. 'with-auto-compression-mode' semble le plus prometteur en ce moment. – rafl
sorte de hors-sujet, mais savez-vous si url-retrieve peut gérer https? – sigjuice