android的cookie
① 安卓手機cookie在哪裡找到
cookie方法:一、華為手機2.首先找到華為手機上的瀏覽器,點擊進入瀏覽器之後,就可以看到右下角的三點。3.點擊進入之後,選擇設置然後看到高級選項欄,選擇網站設置,選擇cookies進入即可查看。二、蘋果手機1.打開手機設置,點擊Safari瀏覽器。2.下拉到最底部,點擊高級,在高級窗口中,點擊網站數據。3.進入網站數據後,就可以看到之前瀏覽網頁留下來的Cookie數據了。Cookie,有時也用其復數形式 Cookies。類型為「小型文本文件」,是某些網站為了辨別用戶身份,進行Session跟蹤而儲存在用戶本地終端上的數據(通常經過加密),由用戶客戶端計算機暫時或永久保存的信息。
② 如何管理安卓中的Cookie
Cookie管理是大家在做安卓app開發中難以避免的問題。我在此發表一些關於Cookie管理的拙見。
Cookie是什麼
Cookie最重要的作用是會話識別(SeesionId)和狀態長期保持(在瀏覽器保存需要長期保持的數據)。
注意,這些工作並不是必須通過Cookie進行,也可以約定提交數據格式和提交數據格式,固定其中附加數據欄位來替代Cookie。但是不推薦這么做,因為如果涉及到與WebView交互,就需要把Json中得數據轉化成Cookie,會增加不必要的工作量和犯錯的幾率。而且HttpClient提供了這個工具,很完善,為什麼不用呢。
Cookie在安卓中的使用方式--標示會話,附加信息
1.通過Session標示一次會話,舉個例子:注冊時,判斷客戶端注冊錯誤次數(注冊次數已經超過限制,顯示驗證碼)
2.傳遞附加數據,舉個例子:傳遞單點登陸的token。
Cookie可能存放的位置--CookieStore,CookieManager
1.Httpclient會存儲當次請求的cookie內容,存儲位置在 httpClient.getCookieStore 但是Apache建議自定義Cookie存儲方式,因為Cookiestore默認把Cookie放在Arraylist里很容易被系統回收,參見[1]。
2.WebView會存儲Cookie在CookieManager,具體使用方式,後續的文章會講這里不是重點。
如何保存Cookie--中間變數,SharedPreference
通常HttpClient中得Cookie不能直接與WebView中得Cookie共享,而且HttpClient中的Cookie需要進一步修改才能給WebView用,所以這里需要一個中間變數(這里叫做CookieMap)來管理Cookie。每次請求的時候都要刷新CookieMap,我推薦的Cookie管理方式是只增加、修改不刪除。每次請求完成都要進行一次Cookie同步,如果app要求保持登陸狀態的需求,也可以把cookie放入Preference。代碼如下:
List<Cookie> cookieList = httpClient.getCookieStore().getCookies();
if (context == null || cookieList == null || cookieList.size() == 0) {
return;
}
SharedPreferences preferences = context.getSharedPreferences(Constant.HTTPHEAD, Context.MODE_PRIVATE);
Editor edit = preferences.edit();
for (Cookie cookie : cookieList) {
edit.putString(cookie.getName(), cookie.getValue());
httpCookiesMap.put(cookie.getName(), cookie);
}
edit.commit();
請求前處理Cookie
HttpClient
將Cookie放入CookieStore中
httpClient.getCookieStore().addCookie(cookie)
或者在Request的Header中Setcookie
注意,如果進行此操作,就不要保留httpclient中的Cookie,否則容易造成給伺服器提交的Request的Header中包含兩個Cookie的情況,會造成有的伺服器混亂比如我們的Ngix。
// 由於自行處理cookie所以要清理client管理的cookie否則容易出現兩個cookie頭的情況
httpClient.getCookieStore().clear();
String strHeader =getCookiesForHttpHeader(context);
request.setHeader(Constant.COOKIE, strHeader);
HttpResponse response = httpClient.execute(request);
WebView
如果Api和Webview所請求的頁面在不同於(正常也不會在同一個域),那麼就要求重新設置Cookie的域(Domain)和Path,這里鼓勵把Path范圍設置的大一些否則有些請求比如(Ajax,Jsonp)可能得不到Cookie。
cookieManager.setCookie(url, key + "=" + cookie.getValue() + ";domain=" + "xxxx.com"+";path=/");
清理Cookie
如果使用cookie來判斷是否登錄的話,則只清理本地CookieMap和SharedPreference中的Cookie是不夠的。還需要清理掉WebView中的對應的Cookie和HttpClient中的Cookie。否則下次登陸依然是登陸狀態。
// 清理內存cookie
httpCookiesMap.clear();
// 清理httpclientcookie
httpClient.getCookieStore().clear();
// 清理掉WebViewCookie
CookieManager.getInstance().removeAllCookie();
CookieSyncManager.getInstance().sync();
// 清理preferencecookie相關的項目
SharedPreferences preferences = context.getSharedPreferences(Constant.HTTPHEAD, Context.MODE_PRIVATE);
Editor editor = preferences.edit();
editor.remove(Constant.ACCOUNT);
editor.remove(Constant.NICKNAME);
editor.remove(Constant.PHPSESSID);
editor.commit();
③ android 怎麼判斷cookie有沒有到期
Cookie實際上是一小段文本信息。在Web程序中,客戶端瀏覽器請求伺服器,如果伺服器需要記錄該用戶狀態,就使用response向客戶端瀏覽器頒發一個Cookie。客戶端瀏覽器會把Cookie保存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該Cookie一同提交給伺服器。伺服器檢查該Cookie,以此來辨認用戶狀態。伺服器還可以根據需要修改Cookie的內容。
Cookie的失效時間由maxAge屬性決定,單位為秒(Second)。Cookie中通過getMaxAge()方法與setMaxAge(int maxAge)方法來讀寫maxAge屬性。從客戶端讀取Cookie時,包括maxAge在內的其他屬性都是不可讀的,也不會提交。瀏覽器提交Cookie時只會提交name與value屬性。maxAge屬性只被瀏覽器用來判斷Cookie是否過期。
對於android客戶端,登錄成功後伺服器會向客戶端頒發一個Cookie,客戶端將Cookie持久化到本地。當客戶端再次請求該伺服器時,客戶端會把請求的網址連同該Cookie一同提交給伺服器。伺服器檢查該Cookie,以此來辨認用戶狀態。對於Cookie的有效期,是在客戶端本地判斷的,Cookie有效則可以向伺服器進行請求;Cookie失效則需重新登錄獲取新的Cookie之後再與伺服器進行交互。
④ Android開發中怎樣使用cookieManager來管理cookie
1、首先 在android應用程序開始的activity中的梁空oncreaty()方法中注冊cookiemanager。如下:
<span style="font-size:18px;">//設置網路請求cookie
CookieSyncManager.createInstance(this);</span>
2、然後在到橡段瞎網路請求的那個類中設置如下 設置和獲取燃鏈cookie的方法
<span style="font-size:18px;"> protected String getCookie() {
CookieManager cookieManager = CookieManager.getInstance();
String cookie = cookieManager.getCookie("cookie");
if (cookie != null) {
return cookie;
} else {
return "";
}
}
protected void setCookie(String cookie) {
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setCookie("cookie", cookie);
}</span>
3、最後一步就在urlConnection.openConnectin()的後面設置如下方法:
uc = (HttpURLConnection) new URL(url + "?" + paramsStr.toString()).openConnection();
uc.setRequestProperty("Cookie", getCookie());
<pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'宋體';font-size:12.0pt;"><span style="background-color:#344134;">setCookies</span>(uc.getHeaderFields())<span style="color:#cc7832;">;</span>
好了到這里就完成了cookie的設置
3. 過期按需處理一下
附1:cookie的獲取
response.headerFields = conn.getHeaderFields();
setCookies(response.headerFields);
/**
* 存儲cookie
* @param headerFields
*/
protected void setCookies(Map<String, List<String>> headerFields) {
if (null == headerFields) {
return;
}
List<String> cookies = headerFields.get(COOKIES_KEY);
if (null == cookies) {
return;
}
for (String cookie : cookies) {
setCookie(cookie);
}
}
⑤ 手機怎麼開啟瀏覽器的cookie設置,安卓系統的uc
1、手機上打開UC瀏覽器,點擊界面底下三條橫線的菜單按鈕,在彈出來的窗口上點擊「設置」的按鈕。
手機UC瀏覽器是默認開啟cookies的,沒有專門開啟的功能,一般都是在清除記錄的時候,根據個人的需要是否勾選清除cookies的,方法如上。
⑥ android webview 如何存儲cookie
在App中嵌入網頁,使用Nativie方式登錄,然後將cookie保存到WebView中,實現免登錄功能。同步Cookie到WebView的方法可以參考下面的代碼:
/**
* Sync Cookie
*/
private void syncCookie(Context context, String url){
try{
Log.d("Nat: webView.syncCookie.url", url);
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();// 移除
cookieManager.removeAllCookie();
String oldCookie = cookieManager.getCookie(url);
if(oldCookie != null){
Log.d("Nat: webView.syncCookieOutter.oldCookie", oldCookie);
}
StringBuilder sbCookie = new StringBuilder();
sbCookie.append(String.format("JSESSIONID=%s","INPUT YOUR JSESSIONID STRING"));
sbCookie.append(String.format(";domain=%s", "INPUT YOUR DOMAIN STRING"));
sbCookie.append(String.format(";path=%s","INPUT YOUR PATH STRING"));
String cookieValue = sbCookie.toString();
cookieManager.setCookie(url, cookieValue);
CookieSyncManager.getInstance().sync();
String newCookie = cookieManager.getCookie(url);
if(newCookie != null){
Log.d("Nat: webView.syncCookie.newCookie", newCookie);
}
}catch(Exception e){
Log.e("Nat: webView.syncCookie failed", e.toString());
}
}
使用上面的方法可以將Cookie同步到WebView中,這樣瀏覽網頁時即可實現免登錄。
但是在實際使用過程中會出現Cookie並未保存成功,每次都會跳轉到登錄頁面應為初始化WebView時漏掉了重要的東西。可以參考下面代碼設置WebView。
/**
* init WebView Settings
* */
private void initWebViewSettings(){
// myWebView.getSettings().setSupportZoom(true);
// myWebView.getSettings().setBuiltInZoomControls(true);
// myWebView.getSettings().setDefaultFontSize(12);
// myWebView.getSettings().setLoadWithOverviewMode(true);
// 設置可以訪問文件
myWebView.getSettings().setAllowFileAccess(true);
//如果訪問的頁面中有Javascript,則webview必須設置支持Javascript
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.getSettings().setUserAgentString(MyApplication.getUserAgent());
myWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
myWebView.getSettings().setAllowFileAccess(true);
myWebView.getSettings().setAppCacheEnabled(true);
myWebView.getSettings().setDomStorageEnabled(true);
myWebView.getSettings().setDatabaseEnabled(true);
}
完成以上兩步操作,再次運行程序,就會發現,打開網頁後不會再跳轉到登錄頁面了。
⑦ 小米平板4,安卓系統,瀏覽器里有個,接受cookie,選項,是干什麼用的
cookie是臨時文件的意思,保存瀏覽網頁的痕跡,使得再次上同一頁面的時候提高網速,判斷你是否登錄過這個網站,有些可以幫你自動登錄的。
在瀏覽器的「設置」選項中找到「隱私和安全」選項,那裡有「cookie」的設置。方法: 打開瀏覽器--工具--INTERNE選項---隱私--高級--覆蓋自動處理COOKIE--總是允許會話COOKIE--確定。
cookie是臨時文件的意思,保存瀏覽網頁的痕跡,使得再次上同一頁面的時候提高網速,判斷你是否登錄過這個網站,有些可以幫你自動登錄的。在瀏覽器的「設置」選項中找到「隱私和安全」選項,那裡有「cookie」的設置。方法:打開瀏覽器--工具--INTERNE選項---隱私--高級--覆蓋自動處理COOKIE--總是允許會話COOKIE--確定