如何使用 Spray 在 Http Post 中发送 FormData

How to send FormData In Http Post using Spray

我想用我的 Spray Client 发送一个 post 具有此内容类型的请求

Content-Type: application/x-www-form-urlencoded 

我相信我需要为此使用对象 FormData :

var fD = new FormData(Seq("UserID:" -> "123", "PWD" -> "123" , "Brand" -> "123"))

但我愿意接受其他解决方案。

编辑:

我试过这样发送:

implicit val system = ActorSystem("Client")
  var fD =  FormData(Map("UserID" -> "123", "PWD" -> "123" , "Brand" -> "123"))
  import system.dispatcher // execution context for futures below
  val log = Logging(system, getClass)
  log.info("Sending test Msg")
  val pipeline = sendReceive ~> unmarshal[FormData]
  var startTimestamp = System.currentTimeMillis()
  val responseFuture = pipeline {
    Post(url, fD)
  }
  responseFuture.onComplete(x=> println(s"Request completed in ${System.currentTimeMillis() - startTimestamp} millis.\n" +
    s"Recived :"+x.get)

  )

我遇到了这个错误:

spray.httpx.PipelineException: UnsupportedContentType(Expected 'application/x-www-form-urlencoded')

我做错了什么?感谢帮手。

您基本上已经回答了您自己的问题——您将要坚持使用 FormData。不过有几件小事:

  1. 由于您使用的是 FormData 案例 class,您可以删除 "new".
  2. FormData 的伴随对象将允许您传入 一个 Map 而不是一个元组序列。