Ответ 1
По-видимому, в некоторый момент в класс FormData был добавлен метод toEntity
. Итак, теперь это похоже на простейшее решение проблемы:
val formData = FormData(combinedParams).toEntity
val r = HttpRequest(POST, url, headers, formData)
Я пытаюсь выяснить, как создать базовый HTTP-запрос POST с помощью библиотеки Akka HTTP. Вот что я придумал:
val formData = Await.result(Marshal(FormData(combinedParams)).to[RequestEntity], Duration.Inf)
val r = HttpRequest(POST, url, headers, formData)
Дело в том, что для меня это кажется немного неидиоматичным. Существуют ли другие способы создания HttpEntity из FormData? Особенно тот факт, что я должен использовать Await
или возвращать Будущее, даже несмотря на то, что данные легко доступны, кажется слишком сложным для такой простой задачи.
По-видимому, в некоторый момент в класс FormData был добавлен метод toEntity
. Итак, теперь это похоже на простейшее решение проблемы:
val formData = FormData(combinedParams).toEntity
val r = HttpRequest(POST, url, headers, formData)
Вы можете использовать Marshal
в для понимания с другими фьючерсами, такими как те, которые вам нужно отправить, и отменить маркер ответа:
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
Вы также можете использовать RequestBuilding
:
Http().singleRequest(RequestBuilding.Post(url, formData)).flatMap(Unmarshal(_).to[String])