akka HttpResponse将body读取为String scala
发布时间:2020-12-16 09:29:23 所属栏目:安全 来源:网络整理
导读:所以我有一个带有这个签名的函数(akka.http.model.HttpResponse): def apply(query: Seq[(String,String)],accept: String): HttpResponse 我只是在测试中得到一个值,如: val resp = TagAPI(Seq.empty[(String,api.acceptHeader) 我想在测试中检查它的身体
所以我有一个带有这个签名的函数(akka.http.model.HttpResponse):
def apply(query: Seq[(String,String)],accept: String): HttpResponse 我只是在测试中得到一个值,如: val resp = TagAPI(Seq.empty[(String,api.acceptHeader) 我想在测试中检查它的身体,例如: resp.entity.asString == "tags" 我的问题是如何将响应体作为字符串? 解决方法
由于Akka Http是基于流的,因此该实体也是流式传输.如果您确实需要一次完整的字符串,可以将传入的请求转换为严格的字符串:
这是通过使用toStrict(timeout:FiniteDuration)(mat:Materializer)API在给定时间限制内将请求收集到严格实体中完成的(这很重要,因为您不想“尝试永远收集实体”万一传入请求确实永远不会结束): import akka.stream.ActorFlowMaterializer import akka.actor.ActorSystem implicit val system = ActorSystem("Sys") // your actor system,only 1 per app implicit val materializer = ActorFlowMaterializer() // you must provide a materializer import system.dispatcher import scala.concurrent.duration._ val timeout = 300.millis val bs: Future[ByteString] = entity.toStrict(timeout).map { _.data } val s: Future[String] = bs.map(_.utf8String) // if you indeed need a `String` (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Webservice(基于Axis2-1.4.1)复杂数据类型解决方案
- 干货丨细说Angular 中的变化检测(Change Detection)
- AngularJS 2 – 使用哪种语言? (Typescript,Javascript,Da
- webservice for sharepoint 2010
- 解决BootStrap Table表格中含中文时点击导出数据无响应的问
- unix – 如何在Bash中预先形成Mid函数
- Webservice_22_编写WSDL的不同方式(wrappered bare rpc)
- 棘手的bash试图用不同的参数运行程序
- 利用resteasy框架构建rest webservice----第二波:使用不同
- WebServices测试之三-----suds测试WEBSERVICES