私はこれを理解しようとして髪を引っ張ってきました:私はHttpsURLConnectionを作成し、java.net.cookiemanagerを使用してCookieを管理しています(私が理解しているように、android.webkit.cookiemanagerをHttpUrlConnection/HttpsUrlConnectionに使用する方法はありませんか? )。長年の Cookie を後の接続に保存する必要があります。
悲しいことに、私はhttp://loopj.com/android-async-http/を使用できません。信頼できない証明書を許可する必要があるため、PersistentCookieStore です ( http://abhinavasblog.blogspot.se/2011/07/allow-untrustedを使用) -certificate-for-https.html )。PersistentCookieStore を単独で使用してみましたが、Apache Cookie を使用しており、Java.net Cookie を使用しています...
これは私が試したことです:
cManager = new CookieManager(null, CookiePolicy.ACCEPT_ALL);
private void setSharedPreferences(){
List<HttpCookie> cookies = cManager.getCookieStore().getCookies();
if (cookies.isEmpty()) {
Log.d(tag,"no cookies received");
} else {
for (int i = 0; i < cookies.size(); i++) {
if(cookies.get(i).getName().equals("rememberMe")) {
editor.putString(
"rememberMe", cookies.get(i).toString());
editor.commit();
}
}
}
}
そして、次のアプリの起動時に Cookie を取得しているとき:
SharedPreferences sharedPreferences = context.getSharedPreferences("PREF_NAME", Context.MODE_PRIVATE);
editor = sharedPreferences.edit();
String rememberString = sharedPreferences.getString("rememberMe", "none");
if (!rememberString.equals("none")) {
Log.d("rememberME är inte", "none!");
URI uriToCookie = null;
try {
uriToCookie = new URI("https://myservername.com");
} catch (URISyntaxException e) {
e.printStackTrace();
}
List<HttpCookie> cookieList = HttpCookie.parse(rememberString);
cManager.getCookieStore().add(uriToCookie, cookieList.get(0));
}
Cookie は cManager に追加されますが、サーバーによって認識されません。何らかの解析上の問題があると思います。誰かが解決策を得ましたか?