【发布时间】:2015-10-10 12:58:02
【问题描述】:
我正在尝试了解如何使用新的akka.http 库。我想向服务器发送一个 http 请求并将整个响应正文作为单个字符串读取,以生成 Source[String,?]。
这是迄今为止我能够产生的最佳解决方案:
def get(
modelID: String,
pool: Flow[(HttpRequest,Int),(Try[HttpResponse],Int),Http.HostConnectionPool]
): Source[String,Unit] = {
val uri = reactionsURL(modelID)
val req = HttpRequest(uri = uri)
Source.single( (req,0) )
.via( pool )
.map {
case (Success(resp),_) =>
resp.entity.dataBytes.map( _.decodeString("utf-8") )
}.flatten(FlattenStrategy.concat)
.grouped( 1024 )
.map( _.mkString )
它似乎工作得很好(除了缺少的错误路径),但对于这样简单的任务来说有点笨拙。有更聪明的解决方案吗?我可以避免grouped/mkString 吗?
【问题讨论】:
标签: scala http akka akka-stream