WS.url("urlhere").withHeaders("Cookie -> cookieIuse")
、。レスポンスからクッキーを取得する場合は、次のコードを使用したリクエストではなく、コントローラでクッキーをレスポンスに設定する必要があります。
response().setCookie("Cookie", "cookieIuse");
参照は、ここでもう一つは、「urlhereは」あなた自身のウェブサイトのURLでない場合は、サーバー側で返された応答を、動作させるために何の権利を持っていないと、ということであるhttps://www.playframework.com/documentation/2.5.x/JavaResponse
ですサーバー側でのみ変更することもできます。
更新:
はあなたのためにいくつかの例を与える、Scalaのコードは次のようであり、上記の例では、それ
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")
}
}
は、「試験」アクションが呼び出すようにJavaがちょうど見える「インデックス'とWS。 「インデックス」はクッキーによる応答を返し、「テスト」はレスポンスのクッキーを使用してすべてのクッキーを取得します。
幸いです。
はいウェブサイトは私が回答の権利を持っています。私は、第2のコントローラから応答とクッキーを取得するために、1つのコントローラを使用して別のコントローラを呼び出そうとしています。私はレスポンスで料理をどのように設定すれば、WSResponseからクッキーを得ることができるのか分かりません。私の2番目のコントローラーは既にwithCookiesメソッドを使って応答を返します – MrTugay
@MrTugay答えにいくつかのサンプルコードを追加しました。 scalaで書かれていますが、javaによって書かれたもののように見えます。コードは私のマシンで働いています。 – Jerry
私はあなたのものに似ていましたが、私の "インデックス"が303のリダイレクトURLを返すので、私のコードはうまくいかないと思いますので、リダイレクトする前に応答が得られませんか? – MrTugay