我正在使用Spray API(spray-client)来访问外部URL,而我正在使用gzip压缩HttpResponse。如何解压缩此HttpResponse以获取其实体(在我的情况下为json)?
val future: Future[HttpResponse] = (IO(Http) ? Get(uri)).mapTo[HttpResponse]
val response = Await.result(future, Duration.inf)
val json = response.entity
这里,json被gzipped。我该如何解压缩?
答案 0 :(得分:5)
您需要使用流水线和decode
指令。就像这个example。
修改该示例您的代码将如下所示:
val pipeline: HttpRequest => Future[String] = (
sendReceive
~> decode(Gzip)
~> unmarshal[String]
)
val response: Future[String] =
pipeline(Get(uri))
如果您不想要期货的好处,您可以等待回复。
在旁注中,您可以使用spray-json并为您的响应创建一个对象,然后将http响应直接解组到案例类中,而无需处理json。