Akka HTTP 如何 POST singleRequest with Content-Type application/x-www-form-urlencoded
Akka HTTP how to POST singleRequest with Content-Type application/x-www-form-urlencoded
我坚持使用 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 日志中,我在已解析的请求 POST 正文部分看到以下内容:
(多部分形式:162)
所以问题是如何将内容类型设置为application/x-www-form-urlencoded
?
问题与 FormData
类型有关。为了执行 application/x-www-form-urlencoded
请求,您需要使用包 akka.http.scaladsl.model
中的 FromData
下面是工作示例:
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`)
)
我坚持使用 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 日志中,我在已解析的请求 POST 正文部分看到以下内容:
(多部分形式:162)
所以问题是如何将内容类型设置为application/x-www-form-urlencoded
?
问题与 FormData
类型有关。为了执行 application/x-www-form-urlencoded
请求,您需要使用包 akka.http.scaladsl.model
FromData
下面是工作示例:
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`)
)