Спрей Распаковать HttpResponse

Я использую Spray API (spray-client), чтобы попасть на внешний URL-адрес, и я получаю сжатый 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 заархивирован. Как распаковать?


person turiLauke    schedule 26.08.2014    source источник


Ответы (1)


Вам нужно использовать конвейерную обработку и директиву decode. Как в этом примере.

Изменив этот пример, ваш код будет выглядеть примерно так:

val pipeline: HttpRequest => Future[String] = (
  sendReceive
  ~> decode(Gzip)
  ~> unmarshal[String]
)
val response: Future[String] =
  pipeline(Get(uri))

Затем вы можете сделать Await для ответа, если вам не нужны преимущества фьючерсов.

Кстати, вы можете использовать spray-json и создать объект для своего ответа, а затем развернуть http-ответ непосредственно в case без необходимости иметь дело с json.

person Gangstead    schedule 27.08.2014
comment
Рад, что могу помочь. Не забудьте принять ответ. - person Gangstead; 28.08.2014