В первом запросе вы входите, используя HTTP Basi c аутентификация . Поддерживает ли используемый вами сайт аутентификацию HTTP basi c? Обычно, когда сайт поддерживает его, он не отправит вам сообщения ie, скорее он будет ожидать, что учетные данные будут отправляться при каждом запросе. Таким образом, при использовании аутентификации HTTP basi c не требуется входить по URL-адресу входа, вместо этого добавьте имя пользователя и пароль в запрос к queryUrl
. Если это не сработает, то это может означать, что сайт, на который вы делаете запросы, не поддерживает HTTP Basi c аутентификацию.
Другой тип входа в систему - ввод имени пользователя и пароля при входе в систему. форма, а затем сайт, на который вы входите, отправит вам обратно повара ie, который вы можете использовать для последующих запросов. Похоже, это то, что вы пытаетесь сделать, но чтобы сделать это, вы не можете использовать метод withAuth
, скорее, вы должны выяснить, какие параметры имени пользователя / пароля находятся в форме входа на сайт, и отправить форма с этими параметрами. Я не могу сказать вам, что это за параметры, которые полностью зависят от сайта, на который вы входите, вам придется посмотреть документацию для этого сайта или HTML, которые он выводит на странице входа в систему. Когда вы получите ответ на запрос входа в систему, вы должны проверить код ответа, чтобы увидеть, был ли он успешным. Документацию о том, как отправить параметры формы с помощью Play WS, можно найти здесь , вот пример того, как это может выглядеть:
val reqLogin = ws.url(loginURL)
.post(Map(
"yourusernameparameter" -> Seq(userName),
"yourpasswordparameter" -> Seq(password)
))
Чтобы прояснить, yourusernameparameter
и yourpasswordparameter
поля выше должны быть заменены тем, что требуется для сайта, на который вы входите. Вам также может понадобиться ввести токены CSRF.