WS.url("urlhere").withHeaders("Cookie -> cookieIuse")
, die das Cookie in der Anfrage, nicht in Reaktion setzt. Wenn Sie einen Cookie von der Antwort erhalten möchten, sollten Sie den Cookie als Antwort in Ihrem Controller festlegen, nicht die Anfrage mit dem folgenden Code.
response().setCookie("Cookie", "cookieIuse");
die Referenz ist hier https://www.playframework.com/documentation/2.5.x/JavaResponse
Eine andere Sache ist, dass, wenn die „urlhere“ url nicht Ihre eigene Website ist, können Sie keine Rechte haben die Antwort für den Betrieb, die von der Serverseite zurückgeführt wird und kann auch nur im Server-Ende geändert werden.
Update:
einige Beispiele geben für Sie, den scala Code folgt und die Java sieht genauso aus wie es
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")
}
}
in dem obigen Beispiel 'Test' Aktion wird Index nennen mit WS. Der 'Index' gibt die Antwort mit Cookies und 'test' verwendet die response.cookies, um alle Cookies in Antwort
Viel Glück mit dir zu erhalten.
Ja, die Website ist eine Ich habe Rechte an der Antwort. Ich versuche, einen Controller zu verwenden, um einen anderen Controller aufzurufen, um die Antwort und Cookies vom zweiten Controller zu erhalten. Ich verstehe nicht, wie das Kochen in der Antwort erlaubt mir, die Cookies von der WSResponse zu bekommen. Mein zweiter Controller gibt bereits eine Antwort mit der Methode withCookies – MrTugay
@MrTugay Ich habe einige Beispielcode in die Antwort hinzufügen. Obwohl es mit Scala geschrieben ist, werden Sie feststellen, dass es aussieht wie das, was von Java geschrieben wird. Der Code hat in meiner Maschine funktioniert. – Jerry
Ich habe es ähnlich wie deins gemacht, aber ich denke, dass mein Code nicht funktioniert, da mein "index" eine Weiterleitungs-URL mit 303 zurückgibt, also bekomme ich vielleicht nicht die Antwort, bevor er mich umleitet? – MrTugay