2013-05-08 37 views
5

私はelispコードからHTTP GETリクエストを送信し、レスポンスの内容を変数に格納しようとしています。EmacsのHttpリクエスト

use LWP::Simple; 
my $data = get("http://some.url"); 

私はWindows 7 & Emacs 24.2を使用しています。


Emacs-Webパッケージを使用しようとしました。ここで、さらに簡素化文書の例、基本的にはです:

動作しません
(web-http-get 
(lambda (httpc header my-data) 
    (message my-data)) 
:url "http://breqwas.net/test.txt")) 

が、私はミニバッファでこのresponceを得る:

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

ドキュメントからのコードのオリジナル作品は、同じように失敗しました。


私もhttp-get機能に見えたが、「バッファ内のURLを取得する」 - それは私が必要なものではありません。私はバッファでそれを必要としない、私は変数でそれが必要です。

+0

私はちょうどmelpaからWebパッケージをインストールし、あなたの例では、正常に動作します。途中で取り込まれるパッケージの古いバージョンがないことを確認してください。 –

答えて

12

私はEmacsに含まれているurl-retrieve-synchronouslyを使用することをお勧めします。結果はバッファに格納されていますが、簡単にそのような文字列としてそれを評価することができます

(with-current-buffer (url-retrieve-synchronously "http://stackoverflow.com") 
    (prog1 
     (buffer-string) 
    (kill-buffer))) 
+0

それは物事をやってくそっているような気がしますね? –

+1

バッファ内のデータを操作するemacsの方法を受け入れてください。それはあまり悪くありません:) – ataylor

+0

BTW、HTTPレスポンスを解析しません。 –