mokeheheのScheme日記

ツッコミ、添削大歓迎です。いろいろ教えてください。

2007-11-24

[] httpから取得

anarchy golf - example_comを解いてみる。HTTPからの取得はHTTPでGET Schemeでどう書く?orgをモロ参照してできた。

(use rfc.uri)
(use rfc.http)

; uri-parse が分解してしまったpathとqueryとfragmentをつなげる
(define (uri-path path query fragment)
        (string-append path
                       (if query
                           (string-append "?" query)
                         "")
                       (if fragment
                           (string-append "#" fragment)
                         "")))

; uri を http-get して本文を返す
(define (get-http-text uri)
        (receive (scheme auth host port path query fragment)
                 (uri-parse uri)
                 (values-ref (http-get host
                                       (uri-path path query fragment))
                             2)))

(display
 (get-http-text
  (read-line (current-input-port))))
  • uri-parseを呼び出すと多値で返ってくるので、receiveで受け取って処理。メンドイ。
  • 「?hoge=fuga」とかのクエリ文字の「?」と、アンカー「#name」の「#」が削られてしまうので再構築。削らなければ単に結合するだけですむのに、なんか微妙にメンドイ。
トラックバック - http://sicp.g.hatena.ne.jp/mokehehe/20071124