2016-05-16 14 views
1

Play FrameworkとWSClientを初めて使用するのは初めてです。私は試している間に問題が発生しました。WSResponseにWSRequestのクッキーまたはヘッダーがありません

私はWS.url( "urlhere")で要求を作成しwithHeaders。。( "クッキー - > cookieIuse")(GET)

私はクッキーを呼び出す使用し、その呼び出しから応答を持つとサイズを確認クッキーの配列のうち、それは0に終わった!

リクエストが正しく通過していることを確認しました。クッキーを返すためにwithCookiesを使用して以来、私のコードはクッキーで応答していたはずです。何か案は?私は自分のコードをテストし、それに従って、withCookiesのクッキーやヘッダがWSResponseに返されていないことを除いてすべて正しいです。応答で、要求にクッキーを設定していない

おかげ

答えて

1
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。 「インデックス」はクッキーによる応答を返し、「テスト」はレスポンスのクッキーを使用してすべてのクッキーを取得します。

幸いです。

+0

はいウェブサイトは私が回答の権利を持っています。私は、第2のコントローラから応答とクッキーを取得するために、1つのコントローラを使用して別のコントローラを呼び出そうとしています。私はレスポンスで料理をどのように設定すれば、WSResponseからクッキーを得ることができるのか分かりません。私の2番目のコントローラーは既にwithCookiesメソッドを使って応答を返します – MrTugay

+0

@MrTugay答えにいくつかのサンプルコードを追加しました。 scalaで書かれていますが、javaによって書かれたもののように見えます。コードは私のマシンで働いています。 – Jerry

+0

私はあなたのものに似ていましたが、私の "インデックス"が303のリダイレクトURLを返すので、私のコードはうまくいかないと思いますので、リダイレクトする前に応答が得られませんか? – MrTugay

関連する問題