2

ディスパッチライブラリを使用して、httpPOSTリクエストを介してファイルをダウンロードしようとしています。サーバーは、返すデータファイルのファイル名を提案する「content-disposition」ヘッダーを返します。

応答本文全体を文字列として読み取ることに成功しました。

http(r >~ { (x) => println(x.getLines.mkString("","\n","")) })

応答ヘッダーを自分で読み取る

http(r >:> { (x) => println(x) })

応答本文のBufferedReaderを取得します

http(r >> { (x,c) => (new BufferedReader(new InputStreamReader(x,c))).readLine })

ディスパッチライブラリを使用して、応答ヘッダーと応答本文を一度に取得するにはどうすればよいですか?ドキュメントは非常にまばらで、私はScalaを初めて使用します。

TIA

マイケル

4

1 に答える 1

2

Dispatchは、ハンドラーを使用して要求からのHTTP応答を処理します。これは、InputStreamの生成、文字列としてのコンテンツの返送、応答のヘッダーの確認など、質問で概説したタスクのような、ルーチンタスクを実行するためのいくつかの便利なショートカットを提供します。>+2つの別々のハンドラーを構成し、同じリクエストでそれらを実行するメソッド、もあります。そのハンドラーを使用して問題を解決する方法は次のとおりです。

val ret = http(req >+ { r => (r as_str, r >:> { _("Content-Disposition") }) })

戻り値はTuple2であり、この場合、Webページのコンテンツである文字列とContent-Dispositionヘッダーの値である別の文字列が含まれています。

于 2010-09-28T04:58:14.053 に答える