WS.url("urlhere").withHeaders("Cookie -> cookieIuse")
, который устанавливает куки в запрос, а не в ответ. Если вы хотите получить cookie от ответа, вы должны установить cookie в ответ в своем контроллере, а не запрос, используя следующий код.
response().setCookie("Cookie", "cookieIuse");
ссылка здесь https://www.playframework.com/documentation/2.5.x/JavaResponse
Другое дело, что, если «urlhere» не ваш собственный веб-сайт URL, у вас нет прав для управления ответ, который возвращается на стороне сервера и также может быть изменен только на сервере. Индекс
дают некоторый пример для вас, код Scala будет ниже, и Java выглядит как это
class Application @Inject() (ws: WSClient) extends Controller {
implicit val context = play.api.libs.concurrent.Execution.Implicits.defaultContext
def index = Action { implicit request =>
//get all contents from request header including cookies set in 'test' controller
//and turn it to map
val requestCookies = request.headers.toSimpleMap
//print the cookies in the request send from 'test' controller
println(requestCookies)
Ok(views.html.index("Your new application is ready.")).withCookies(Cookie("theme", "blue"))
}
def test = Action { implicit request =>
//method 'withHeaders' sets the cookies into request
//and send it to 'index' controller
val futureResponse: Future[WSResponse] = ws.url("http://localhost:9000/").withHeaders("cookie" -> "test").get()
futureResponse.map {
//get cookie from WSResponse, the response is the type of WSResponse after mapped
response => response.cookies.foreach(println(_))
}
Ok("test")
}
}
в приведенном выше примере, «тест» Действие будет вызывать»:
обновление 'с WS. «Индекс» возвращает ответ с помощью Cookies, а «test» использует response.cookies, чтобы получить все файлы cookie в ответ
Удачи вам.
Да, сайт один, у меня есть права на ответ. Я пытаюсь использовать один контроллер для вызова другого контроллера, чтобы получить ответ и файлы cookie со второго контроллера. Я не понимаю, как настройка приготовления в ответ позволяет мне получать куки из WSResponse. Мой второй контроллер уже возвращает ответ с помощью метода withCookies – MrTugay
@MrTugay. Я добавлю в пример код примера. Хотя это написано с помощью scala, вы обнаружите, что это похоже на то, что написано java. Код работал на моей машине. – Jerry
Я сделал это похоже на ваш, но я думаю, что мой код не работает, так как мой «индекс» возвращает URL-адрес перенаправления с 303, так что, возможно, я не получаю ответ, прежде чем перенаправляет меня? – MrTugay