Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

HttpClient クッキーの使用

簡易な質問になりますがお願いします。

HttpClientを使用し、クッキーに情報を保存したいのですが、
下記方法で試してもアプリケーションを再起動すると
保存したデータが消えてしまいます。

//////////////////////////////////////////////////
//※抜粋 情報生成 mHttpClientはインスタンス変数
mHttpClient = new HttpClient(new     MultiThreadedHttpConnectionManager());        
mHttpClient.getParams().setCookiePolicy(
            CookiePolicy.BROWSER_COMPATIBILITY);

Cookie cookie = new Cookie();
cookie.setPath("/");
cookie.setComment(null);
cookie.setSecure(false);
cookie.setName("year");
Calendar dat = new GregorianCalendar(2006, 1, 1);
c.setExpiryDate(dat.getTime());
c.setValue(URLEncoder.encode("2006"));
mHttpClient.getState().addCookie(c);

/////////////////////////////////////////////
//※抜粋 情報参照 mHttpClientは上記で生成したもの。
Cookie[] cc = mHttpClient.getState().getCookies();
for (int i = 0; i < cc.length; i++) {
  System.out.println("名称" + cc[i].getName());
  System.out.println("値" + URLDecoder.decode(cc[i].getValue()));
}

とても横着な質問であることは重々承知しておりますが、
助言など頂ければありがたいです。
宜しくお願い致します。

7

回答

90408

閲覧

7件の回答

評価

0

破棄する日時を2006年1月1日にしているからでは?

評価

0

回答有難うございます。

>>破棄する日時を2006年1月1日にしているからでは?
申し訳ありません。実際のコード上では2006年3月5日、つまり
Calendar dat = new GregorianCalendar(2006, 3, 5);
c.setExpiryDate(dat.getTime());
となっておりました。

破棄日時の設定に問題は無さそうです…。

評価

0

よく見たら、Cookieのインスタンスはcookieなのに、setExpiryDateとsetValueはcに対して行ってますね。これは?

評価

0

度々ありがとうございます。

>>よく見たら、Cookieのインスタンスはcookieなのに、setExpiryDate
>>とsetValueはcに対して行ってますね。これは?
これも焦り過ぎて誤字になっていました。すいません…。
正しくはcookieです。

現在も引き続き調査を行っておりますが、進展がありません。
永続的にクッキーを保存するモードとかあるのでしょうか…。

評価

0

うーん、javax.servlet.http.Cookieしか使ったことがないんで、これ以上は見当つきませんね…。

評価

0

javax.servlet.http.Cookieは私も以前使用した経験があるので、
わかるのですが。

他のやり方として単純にクッキー形式でファイルを保存してそれを使用する方法があるのですが、せっかくHttpClientを使用しているし
正規の方法で試したい、と思いまして。

javadocも全て英語なのであまりわからないし、サンプルソースもなかなか見当たらないし、あー困った…。

評価

0

サーブレットでは
addCookie()
の後に
RequestDispatcher().forward()
を実行しないと保存されてませんでした。
同じ様に addCookie() の後にやるべき事があるのではないですかね?

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。