Emacs中的Http请求

Art*_*eev 5 lisp emacs elisp

我正在尝试从我的elisp代码发送HTTP GET请求,并将响应的内容存储在变量中.很简单

use LWP::Simple;
my $data = get("http://some.url");
Run Code Online (Sandbox Code Playgroud)

我使用Windows 7和Emacs 24.2.


我尝试使用Emacs-Web包.这里基本上是文档中的一个例子,简化了更多:

(web-http-get
 (lambda (httpc header my-data)
   (message my-data))
 :url "http://breqwas.net/test.txt"))
Run Code Online (Sandbox Code Playgroud)

这不起作用,我在迷你缓冲区得到这个回应:

Keyword argument http://breqwas.net/emacs.txt not one of (:host :port :extra-headers :mode :logging)
Run Code Online (Sandbox Code Playgroud)

文档中的原始代码失败的方式相同.


我也查看了http-get函数,但是"在缓冲区中获取URL" - 这不是我需要的.我不需要它在缓冲区中,我需要它在变量中.

ata*_*lor 12

我建议使用url-retrieve-synchronouslyEmacs附带的.结果放在缓冲区中,但您可以轻松地将其评估为字符串,如下所示:

(with-current-buffer (url-retrieve-synchronously "http://stackoverflow.com")
  (prog1
      (buffer-string)
    (kill-buffer)))
Run Code Online (Sandbox Code Playgroud)

  • @breqwas嗯,你可能想问自己是否真的需要存储在字符串变量中的大量文本,或者将它放在缓冲区中是否真的更方便,因为后者为您提供了多种功能用于处理内容.注意,"在缓冲区中"并不一定意味着内容(立即)对用户可见. (3认同)
  • 拥抱emacs在缓冲区中处理数据的方式,还不错:) (2认同)