Spray Unzip HttpResponse

时间:2014-08-26 21:47:47

标签: scala gzip spray-client

我正在使用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。我该如何解压缩?

1 个答案:

答案 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。