Akka-http:如何从请求头获取用户代理头



我试图从Request-Header中提取User-agent标头,我尝试了这个:

 headerValue(extractUserAgent) { userAgent =>
}

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

我被困在Some(h.)行,我想它可能会给一些字符串值作为User-Agent那里,但不是字符串值在里面。请帮助! !

我终于有办法了

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

在您的示例中,h用于匹配中给定的任何现有对象。因此,除非CC_6是一个对象来匹配,否则它将不起作用。你可以这样更新你的代码:

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

我认为你应该阅读文档,它写得很好,你可以在那里找到你的解决方案:

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

最新更新