19869


xyzzy の lisp を使ってサイト上からファイルを取得したいのですが、サンプルなどが見つからず全くわからない状態です…。

`site-lisp`内を`grep`を使い`http://`を検索しても見ましたがそれらしい所が見つかりませんでした。

どうやって xyzzy の lisp で HTTP上のファイルを開きファイルに保存すればよいでしょうか？


CC BY-SA 3.0
2015-12-10T16:40:42.630
19860
2015-12-11T06:42:09.687
3271
question
lisp xyzzy
xyzzyのlispサイト上からファイルをダウンロードしてくる方法


xyzzy には標準ではそのようなライブラリはありません。

直接ネットワークに接続して応答をファイルに出力させるだけならば次のようなコードになります。ただし、HTTPヘッダを考慮していない等々使い勝手はよくありません。

[code]

    (with-open-file (out "~/output.html" :direction :output :encoding :binary)
      (with-open-stream (stream (connect "www.yahoo.co.jp" 80))
        (set-stream-encoding stream :binary)
        (format stream "GET / HTTP/1.0~%")
        (format stream "~%")
        (loop
          (multiple-value-bind (line missing-newline-p)
              (read-line stream nil)
            (unless line (return))
            (princ line out)
            (unless missing-newline-p (terpri out))))))
    
[/code]

有志の方が配布しているライブラリを使うのが適当だと思います。

  * [junk-library](http://www7a.biglobe.ne.jp/~hat/xyzzy/dl.html#junk-library) : site-lisp/junk/http.l 内に `junk-http-download-file` という関数があります
  * [http-client](https://github.com/miyamuko/http-client) : README に `http-download` のサンプルコードが載っています


CC BY-SA 3.0
2015-12-11T06:42:09.687
19869
2015-12-11T06:42:09.687
2391
19860
answer