我一直拉我的頭髮試圖弄清楚這一點:我做了一個HttpsURLConnection,並使用java.net.cookiemanager來管理我的cookies(有沒有辦法使用android.webkit.cookiemanager HttpUrlConnection/HttpsUrlConnection,據我瞭解?)。我需要將我的長期cookie保存到以後的連接。在sharedpreferences中存儲cookie
很遺憾,我不能使用http://loopj.com/android-async-http/,它是PersistentCookieStore,因爲我需要允許不受信任的證書(使用http://abhinavasblog.blogspot.se/2011/07/allow-untrusted-certificate-for-https.html)。我單獨使用他們的PersistentCookieStore嘗試,但他們使用的是Apache餅乾和我使用java.net餅乾...
這是我已經試過:
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();
}
}
}
}
當我檢索餅乾上下一應用程序啓動:
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,但不被服務器識別。我相信有某種解析問題。任何人都有解決辦法?