1

スプレー 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 を gzip します。解凍するにはどうすればよいですか?

4

1 に答える 1

5

decodeパイプラインとディレクティブを使用する必要があります。こののように。

その例を変更すると、コードは次のようになります。

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

Futures の利点が必要ない場合は、応答に対して Await を実行できます。

余談ですが、spray-jsonを使用して応答用のオブジェクトを作成し、json を処理することなく、http 応答をケース クラスに直接アンマーシャリングできます。

于 2014-08-27T16:01:45.663 に答える