我一直在尝试使用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
迈克尔
答案 0 :(得分:2)
Dispatch使用Handler处理来自请求的HTTP响应。它为执行例行任务提供了几个方便的快捷方式,例如您在问题中概述的那些,例如生成InputStream,将内容作为字符串返回,或者查看响应的标题。还有一个方法>+
,它组成两个单独的处理程序并在同一请求上执行它们。以下是使用该处理程序解决问题的方法:
val ret = http(req >+ { r => (r as_str, r >:> { _("Content-Disposition") }) })
返回值是一个Tuple2,在这种情况下,它包含一个字符串,它是网页的内容,另一个字符串是Content-Disposition标题的值。