发布请求与Akka http

时间:2017-04-05 03:01:08

标签: scala akka akka-http

我有这个帖子请求,有两个问题。

1.具有headers值。文档说它接收Seq[HttpHeader]并传入Seq[RawHeader] HttpHeader,但它表示类型不匹配。为什么呢?

2.我传递了我要发布的数据,但HttpEntity.Default()接收了Source[Bytestring]。如何将data转换为Source[Bytestring]

def post(data: String): Unit = {
    val headers = Seq(RawHeader("X-Access-Token", "access token"))
    val responseFuture: Future[HttpResponse] =
      Http(system).singleRequest(
        HttpRequest(
        HttpMethods.POST,
        "https://beta-legacy-api.ojointernal.com/centaur/user",
        headers,
        entity = HttpEntity.Default(data)
        )
      )
  }

1 个答案:

答案 0 :(得分:1)

  

我传入了一个Seq [RawHeader],它扩展了HttpHeader,但是它说它是' s   类型不匹配。为什么呢?

因为Seq[A]A是不变的。

  

如何将数据转换为Source [Bytestring]

你不必。您可以使用HttpEntity申请方法,该方法需要Array[Byte],并使用withHeaders

import akka.http.scaladsl.model._

def post(data: String): Unit = {
  val responseFuture: Future[HttpResponse] =
    Http(system).singleRequest(
      HttpRequest(
        HttpMethods.POST,
        "https://beta-legacy-api.ojointernal.com/centaur/user",
        entity = HttpEntity(ContentTypes.`application/json`, data.getBytes())
        ).withHeaders(RawHeader("X-Access-Token", "access token"))
    )
}