逆引きxyzzy lisp(HTTP) - circleratio/xyzzy GitHub Wiki

目次

URLの取得

(with-open-stream (stream (connect "www.yahoo.co.jp" "https" :ssl t))
  (format stream "GET / HTTP/1.1\n")
  (format stream "Host: www.yahoo.co.jp\n")
  (format stream "Connection: close\n")
  (format stream "\n")
  (let (line)
    (while (setq line (read-line stream nil))
      (insert line "\n"))))

リファレンスに載っている例をそのまま入力すると返ってこない. HTTP1.1ではデフォルトで keep-aliveが有効であるため. したがって,Connection: close を追加してやる.

URLエンコード/デコードする

標準では Shift_JIS としてエンコードする. UTF-8N あたりにしておくのがよいように思う.

(si:www-url-encode (map-internal-to-utf-8 "あいうえお"))
=> "%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A"

(map-utf-8-to-internal (si:www-url-decode "%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A"))
=> "あいうえお"