jsessionidをcookieに保存する方法を教えてください。そうすれば、postrequestでサーブレットに渡すことができますか? Apache HttpClientバージョン4.0.3を使用しています。私が見つけたすべてのソリューションは、HttpClient 3.1でこれを行う方法を説明しています。チュートリアルを読んでこれを試しましたが、機能しません。
_HttpPost httppost = new HttpPost(postData);
CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", getSessionId());
cookieStore.addCookie(cookie);
client.setCookieStore(cookieStore);
response = client.execute(httppost);
_
編集-詳細な説明
友人が作成したサーブレットに接続しています。ログインしてjsessionid
を取得しました。ここで、別のリクエストを送信し、認証目的でjsessionidを渡す必要があります。 Java HttpURLConnectionを使用し、Cookieを設定し、それを渡して、動作したため、サーブレットは正常に動作します。要求。
別の編集-解決策が1つありますリクエストヘッダーのパラメーターを設定し、機能しました。サーブレットはセッションIDを認識しました。httppost.setHeader("Cookie", "JSESSIONID="+ getSessionId());
今私の質問は次のとおりです。この方法は正しいですか?
この問題を解決できてとてもうれしいです。
HttpPost httppost = new HttpPost(postData);
CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", getSessionId());
//cookie.setDomain("your domain");
cookie.setPath("/");
cookieStore.addCookie(cookie);
client.setCookieStore(cookieStore);
response = client.execute(httppost);
とても簡単!
HttpContextを介してCookieを渡すことでそれを行いました。
HttpContext localContext = new BasicHttpContext();
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
response = client.execute(httppost, localContext);
HttpContext localContext = new BasicHttpContext();
localContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore);
response = client.execute(httppost, localContext);
なしでは4.5バージョンでは動作しません
cookie.setDomain(".domain.com");
cookie.setAttribute(ClientCookie.DOMAIN_ATTR, "true");
おそらく、Cookieの値だけでなく、すべてのCookieプロパティを設定する必要があります。 setPath()
、setDomain()
...など