【问题标题】:Akka HTTP how to POST singleRequest with Content-Type application/x-www-form-urlencodedAkka HTTP 如何使用 Content-Type application/x-www-form-urlencoded POST singleRequest
【发布时间】:2017-08-29 16:30:54
【问题描述】:

我坚持使用 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 日志中,我在 Parsed Request POST Body 部分看到以下内容:

(多部分形式:162)

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

【问题讨论】:

    标签: scala akka akka-http


    【解决方案1】:

    问题与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`)
          )
    

    【讨论】:

      猜你喜欢
      • 2017-09-22
      • 2019-02-04
      • 2016-12-15
      • 2013-11-10
      • 1970-01-01
      • 2019-10-26
      • 1970-01-01
      • 2019-06-14
      • 2017-07-19
      相关资源
      最近更新 更多