Akka-http:如何从请求标头中获取User-Agent标头?

时间:2016-08-31 08:40:17

标签: scala akka-http

我试图从User-agent中提取Request-Header标题,我试过了:

 headerValue(extractUserAgent) { userAgent =>

}


def extractUserAgent: HttpHeader => Option[String] = {
    case h: `User-Agent` => Some(h.)
    case x         => None
 }

我被困在第Some(h.)行,我认为它可能会给User-Agent一些字符​​串值,但不是字符串值在It.Help中!请

3 个答案:

答案 0 :(得分:2)

我终于得到了解决方案

path("test") {
  get {
    headerValueByName("User-Agent") { header =>
      println(">>>>>>>>>>>>>>>>>>>>>>" + header)
      complete(s"""{ "User-Agent" : "${header}" }""")
    }
  }
}

答案 1 :(得分:0)

在您的示例中,给出h来匹配中给出的任何现有对象。因此,除非User-Agent是要与其匹配的对象,否则它将无法工作。您可以按以下方式更新代码:

val uaHeader = "User-Agent".toLowerCase
def extractUA: HttpHeader => Option[String] = {
  case HttpHeader(`uaHeader`,value) => Some(value)
  case _         => None
}

答案 2 :(得分:-1)

我认为您应该阅读文档,正确编写并在那里找到您的解决方案:

http://doc.akka.io/docs/akka-stream-and-http-experimental/1.0/scala/http/common/http-model.html