12

Akka HTTP ライブラリを使用して基本的な HTTP POST リクエストを作成する方法を理解しようとしています。これは私が思いついたものです:

val formData = Await.result(Marshal(FormData(combinedParams)).to[RequestEntity], Duration.Inf)
val r = HttpRequest(POST, url, headers, formData)

問題は、私には少し慣用的ではないように見えるということです。FormData から HttpEntity を作成する他の方法はありますか? 特に、Awaitデータがすぐに利用できるにもかかわらず、Future を使用または返さなければならないという事実は、このような単純なタスクには非常に複雑に思えます。

4

3 に答える 3

18

Marshalリクエストを送信してレスポンスをアンマーシャリングする必要があるものなど、他の Future との理解のために使用できます。

val content = for {
        request <- Marshal(formData).to[RequestEntity]
        response <- Http().singleRequest(HttpRequest(method = HttpMethods.POST, uri = s"http://example.com/test", entity = request))
        entity <- Unmarshal(response.entity).to[String]
      } yield entity
于 2015-09-24T11:14:52.407 に答える
0

次のものも使用できますRequestBuilding

Http().singleRequest(RequestBuilding.Post(url, formData)).flatMap(Unmarshal(_).to[String])
于 2018-12-06T10:50:36.600 に答える