对于 Emacs 扩展,我想通过 HTTP 获取数据。我不太喜欢使用类似于 wget、curl 或 w3m 等工具来执行该操作的想法,因此我使用 url-retrieve 函数。
我正在与其中一个 HTTP 服务器进行通信,它恰好忽略 Accept-Encoding 标头,并坚持始终使用 Content-Encoding: gzip 发送其数据。
由于这个原因,以及 url-retrieve 不会自动解码响应主体的事实,url-retrieve 提供给我的缓冲区将包含二进制 gzip 数据。
我正在寻找一种方法来解码响应主体,最好是以块的形式随着数据到达而进行解码。有没有办法指示 url-retrieve 为我执行此操作?
一次性完成整个响应的解码也是可接受的,但我宁愿避免创建异步子进程运行 gzip,将我收到的响应的部分传输到该进程,然后读取解码后的块所涉及的所有麻烦 - 我在这里正在寻找一些库功能。
我正在与其中一个 HTTP 服务器进行通信,它恰好忽略 Accept-Encoding 标头,并坚持始终使用 Content-Encoding: gzip 发送其数据。
由于这个原因,以及 url-retrieve 不会自动解码响应主体的事实,url-retrieve 提供给我的缓冲区将包含二进制 gzip 数据。
我正在寻找一种方法来解码响应主体,最好是以块的形式随着数据到达而进行解码。有没有办法指示 url-retrieve 为我执行此操作?
一次性完成整个响应的解码也是可接受的,但我宁愿避免创建异步子进程运行 gzip,将我收到的响应的部分传输到该进程,然后读取解码后的块所涉及的所有麻烦 - 我在这里正在寻找一些库功能。
*Messages*
,并搜索我的elisp目录以获取我得到的任何内容,我找出了实现该功能的代码是jka-cmpr-hook.el
和/或jka-compr.el
。使用这些提供的函数之一很容易解决这个问题。with-auto-compression-mode
现在似乎最有前途。 - rafl(url-retrieve "https://google.com/" #'(lambda (status) (pop-to-buffer (current-buffer))))
- Gareth Rees