【问题标题】:akka http - How to add json data to post request?akka http - 如何添加 json 数据来发布请求?
【发布时间】:2017-03-16 20:00:07
【问题描述】:

我正在查询一个搜索 api,我需要将 json 中的查询参数作为正文添加到发布请求中。

val headers: scala.collection.immutable.Seq[HttpHeader] = scala.collection.immutable.Seq(
  RawHeader("accept", "application/json"),
  RawHeader("authorization", "xxxxxxxxxxxxxxxxxxxx"),
  RawHeader("content-type", "application/json"),
  RawHeader("x-customer-id", "123456789")
)

val formData = FormData(Map(
      "Keywords" -> "query", "Count" -> "25"
    ))

val request = HttpRequest(HttpMethods.POST, "https://api.xxx.com/services/xxx/v1/search?client_id=xxxxxx", headers, formData.toEntity)

将使用formData.toEntity 将其作为json 发送到帖子正文中吗?

【问题讨论】:

  • 你需要像 jackson 或 json4s 这样的“marshaller”...

标签: akka akka-http


【解决方案1】:

我为搜索查询创建了一个类并将其序列化并创建了一个HttpEntity,如下所示:

case class SearchObject(keyWords: String, count: Int)

val reqHeaders: scala.collection.immutable.Seq[HttpHeader] = scala.collection.immutable.Seq(
  RawHeader("accept", "application/json"),
  RawHeader("authorization", "xxxxxxxxxxxxxxxxxxxx"),
  RawHeader("content-type", "application/json"),
  RawHeader("x-customer-id", "123456789")
)

val searchObject = net.liftweb.json.Serialization.write(req) //req is search object
val searchObjectEntity = HttpEntity(ContentTypes.`application/json`, searchObject)
val request = HttpRequest(HttpMethods.POST, "https://api.xxxxxxxx.com/services/xxxxxx/v1/search?client_id=45854689", reqHeaders, searchObjectEntity)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2011-10-18
    相关资源
    最近更新 更多