如何使用scala的dispatch lib从单个POST读取响应头+ body

时间:2010-09-27 15:44:07

标签: scala httpclient scala-dispatch

我一直在尝试使用dispatch库通过http POST请求下载文件。服务器返回一个“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 })

如何使用dispatch lib一次性获取响应头和响应主体?文档非常稀疏,我是Scala的新手。

TIA

迈克尔

1 个答案:

答案 0 :(得分:2)

Dispatch使用Handler处理来自请求的HTTP响应。它为执行例行任务提供了几个方便的快捷方式,例如您在问题中概述的那些,例如生成InputStream,将内容作为字符串返回,或者查看响应的标题。还有一个方法>+,它组成两个单独的处理程序并在同一请求上执行它们。以下是使用该处理程序解决问题的方法:

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

返回值是一个Tuple2,在这种情况下,它包含一个字符串,它是网页的内容,另一个字符串是Content-Disposition标题的值。