Как извлечь файл cookie SSO при использовании библиотеки scalaj http

У меня есть HTTPответ. Я пытаюсь получить значение одного из заголовков из него, используяscala. Мой код выглядит примерно так:

import scalaj.http.Http

val result = Http("http:///sample.com")
  .postData("""{"Username":"user1","password":"pass"""")
  .header("Content-Type", "application")
  .header("Accept", "text/plain")
val headers = result.headers.mkString

println("Headers: " + headers)

Заголовки выглядят примерно так:

Cache-Control -> Vector(no-Store)
Content-Type -> Vector(text/html;charset=ISO-8859-l)
Set-Cookie -> Vector(SESSIONID=D122334;path=/a/b/c;SSO=000112233445)

Из этого заголовка я хочу извлечь только значение SSO. Используя приведенный ниже код, я могу правильно их распечатать.

for((k,v) <- result.headers) println(s"key: $k\nvalue: $v\n")

Получение следующего результата:

key: Cache-Control
value: Vector(no-Store)

key: Content-Type
value: Vector(text/html;charset=ISO-8859-l)

key: Set-Cookie
value: Vector(SESSIONID=D122334;path=/a/b/c;SSO=000112233445)

Я хочу извлечь данные для SSO под ключ Set-Cookieодин. Я знаю, как этого добиться с помощью python

Я новичок в Scala. Кто-нибудь может мне помочь?

1 ответ

Решение

Использовать cookies методы и фильтровать cookie по имени

  val ssoToken = Http("http:///sample.com")
    .postData("""???""")
    .header("Content-Type", "application")
    .header("Accept", "text/plain")
    .asBytes
    .cookies
    .find(_.getName == "SSO")
    .map(_.getValue)

Ты получишь Some("tokenValue") когда токен найден, если вы хотите получить его как String, вы можете сделать следующее

ssoToken.getOrElse(sys.error("SSO Token not found"))

Это вызовет исключение, если токен не найден

Другие вопросы по тегам