逆引き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"))
=> "あいうえお"