2015-09-24 11 views
11

Akka HTTPライブラリで基本的なHTTP POST要求を作成する方法を理解しようとしています。これは私が思いついたものです: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を使用しなければならないという事実、またはデータがすぐに利用可能であっても未来を返さなければならないという事実は、そのような単純な作業のためにはあまりにも複雑であるようです。

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 

答えて

6

どうやらtoEntity方法は、いくつかのいるFormDataクラスに追加されました:あなたは、そのようなあなたがリクエストを送信し、応答をアンマーシャリングする必要があるものなど、他の先物、との理解のためにMarshalを使用することができます

17

ポイント。だからこれは現在、問題の最も簡単な解決策のようです:

val formData = FormData(combinedParams).toEntity 
val r = HttpRequest(POST, url, headers, formData) 
+2

これを未来として構築することの変種を示すのはいいかもしれません – Rob

関連する問題