Scala Akka HTTP如何发布内容类型为application/x-www-form-urlencoded的singleRequest

Scala Akka HTTP如何发布内容类型为application/x-www-form-urlencoded的singleRequest,scala,akka,akka-http,Scala,Akka,Akka Http,我坚持使用Akka HTTPsingleRequest()发送请求。我正在尝试处理Stripe API,它要求传入请求的application/x-www-form-urlencoded内容类型 我尝试使用以下HTTP请求结构: val authorization = Authorization(OAuth2BearerToken("some_token")) Http().singleRequest(HttpRequest( uri = Uri("https://api.st

我坚持使用Akka HTTP
singleRequest()
发送请求。我正在尝试处理Stripe API,它要求传入请求的
application/x-www-form-urlencoded
内容类型

我尝试使用以下HTTP请求结构:

val authorization = Authorization(OAuth2BearerToken("some_token"))

Http().singleRequest(HttpRequest(
        uri = Uri("https://api.stripe.com/v1/customers"),
        method = HttpMethods.POST,
        headers = List(authorization),
        entity = FormData(Map("email" -> HttpEntity("test_1@email.com"))).toEntity(),
        protocol = HttpProtocols.`HTTP/1.1`)
      )
但在Stripe日志中,我在解析的请求帖子正文部分看到了以下内容:

(多份表格:162)


因此,问题是如何将内容类型设置为
application/x-www-form-urlencoded

问题与
FormData
类型有关。为了执行
application/x-www-form-urlencoded
请求,您需要使用
FromData
from package
akka.http.scaladsl.model

下面是一个工作示例:

Http().singleRequest(HttpRequest(
        uri = Uri("https://api.stripe.com/v1/customers"),
        method = HttpMethods.POST,
        headers = List(authorization),
        entity = akka.http.scaladsl.model.FormData(Map("email" -> "user@email.com")).toEntity(HttpCharsets.`UTF-8`),
        protocol = HttpProtocols.`HTTP/1.1`)
      )