Диспетчер базы данных неправильно обрабатывает HTTP 302 и аутентификацию

Я использую диспетчер 0.11.0, Scala 2.10 и пытаюсь заставить этот код работать

val svc = url("https://my-server/img/cat.jpg").as(username, password)
val respBody = Http(svc OK as.Response(_.getResponseBodyAsStream))
respBody onComplete {
   case Success(stream) => {
     val fos = new java.io.FileOutputStream("myfile.jpg")
     Iterator
       .continually (stream.read)
       .takeWhile (-1 !=)
       .foreach (fos.write)
     fos.close()
   }
   case Failure(exception) => {
     Logger.log.error(exception.toString)
   }
 }

Когда сервер возвращает 302, диспетчеризация не обрабатывает аутентификацию должным образом, и ошибка была выполнена. Странно, если я указываю URL-адрес на конечную точку JSON, которая возвращает 401, аутентификация работает просто отлично. Я не знаю, почему сервер настроен на возврат 2 разных статусов для несанкционированного доступа, но мне нужно выяснить, как с этим справиться. Любые идеи будут высоко оценены.

Спасибо боб

1 ответ

Решение

Попробуйте как _!() Вместо as(), он использует вытесняющую аутентификацию.

источник:

  def as(user: String, password: String) =
    subject.setRealm(new RealmBuilder()
      .setPrincipal(user)
      .setPassword(password)
      .build())
  def as_!(user: String, password: String) =
    subject.setRealm(new RealmBuilder()
      .setPrincipal(user)
      .setPassword(password)
      .setUsePreemptiveAuth(true)
      .setScheme(AuthScheme.BASIC)
      .build())
Другие вопросы по тегам