Per un'estensione Emacs, mi piacerebbe recuperare i dati su HTTP. Non mi piace particolarmente l'idea di eseguire il bombardamento su cose come wget
, curl
o w3m
per poterlo fare, quindi sto utilizzando la funzione url-retrieve
.Decodifica corpi di risposta gzip-ed con url-retrieve
Uno dei server HTTP con cui sto parlando ignora le intestazioni Accept-Encoding
e insiste per inviare sempre i suoi dati con Content-Encoding: gzip
.
Di conseguenza, e del fatto che url-retrieve
non decodifica automaticamente i corpi di risposta, il buffer url-retrieve
mi presenterà conterrà dati gzip binari.
Sto cercando un modo per decodificare il corpo della risposta, preferibilmente pezzo per pezzo, man mano che i dati arrivano. C'è un modo per ordinare a url-retrieve
di fare questo per me?
Decodificare la risposta tutto in una volta, una volta che è arrivato completamente, sarebbe anche accettabile, ma preferirei evitare tutto il fubar coinvolto nella creazione di un sottoprocesso asincrono che esegue gzip, piping le parti della risposta che ho ottenuto, e leggendo di nuovo i pezzi decodificati, cercherò qualche funzione di libreria qui.
Emacs ha ovviamente integrato gzip, in quanto è possibile aprire file compressi con gzip, modificarli e salvarli in modo trasparente. La domanda è ... dov'è questo gancio, e la risposta non è ovvia. – jrockway
Grazie, John. Mentre ero consapevole di essere in grado di aprire i file compressi con gzip, in realtà non mi è venuto in mente che questo potrebbe essere correlato, ma ovviamente lo è. Dall'apertura di un file .gz su disco, guardando '* Messages *', e cercando le mie directory elisp per quello che ho ottenuto, ho capito che l'implementazione del codice era 'jka-cmpr-hook.el' e/o' jka- compr.el'. Sembra probabile che questo problema sia facile da risolvere con una delle funzioni fornite da questi. 'with-auto-compression-mode' sembra molto promettente in questo momento. – rafl
un po 'fuori tema, ma ti capita di sapere se url-retrieve può gestire https? – sigjuice