这里的Scala新手。
我正试图了解Play,以及我们如何在我们的环境中使用它。我们需要构建的应用程序的部分要求是我们点击外部Web api,它会在登录请求的标题中启动授权ID。
我正在使用WS库执行对登录服务的POST
调用,并且可以使用val cookie = response.header("Set-Cookie").toString
返回一个如下所示的字符串:
Some(JSESSIONID=1234XYZ5678ABC; Path=/some_path/; HttpOnly)
在上述字符串中检索1234XYZ5678ABC
需要做什么?
答案 0 :(得分:1)
(?<=JSESSIONID=)[A-Z0-9]+(?=;)
。答案 1 :(得分:0)
我不知道Play是否提供了任何方便的方法,但这里有一般的Scala方法:
scala> val sessionIdRegex = """^.*JSESSIONID=([a-zA-Z0-9]+).*$""".r
sessionIdRegex: scala.util.matching.Regex = ^.*JSESSIONID=([a-zA-Z0-9]+).*$
scala> val rawSessionData = Some("JSESSIONID=1234XYZ5678ABC; Path=/some_path/; HttpOnly")
rawSessionData: Some[String] = Some(JSESSIONID=1234XYZ5678ABC; Path=/some_path/; HttpOnly)
scala> for {
| sessionInfo <- rawSessionData
| sessionIdRegex(sessionId) <- sessionIdRegex findFirstIn sessionInfo
| } yield sessionId
res0: Option[String] = Some(1234XYZ5678ABC)
您可以在结果上使用getOrElse(<default>)
,如果您必须从该选项中提取一些值。相应地调整正则表达式以满足更严格的要求或提取多个组/变量。