androidcookies
⑴ 如何打開安卓手機的cookie功能
cookie功能就是避免你上網時重復輸入用戶名,密碼等內容。只有在瀏覽器里設置,以uc瀏覽器為例,在設置--安全設置--保存密碼--選擇自動保存密碼,然後再把經常瀏覽的網頁保存書簽就行了,當然有的網頁還會提示你「下次自動登錄''這個也要勾上。
⑵ 安卓手機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中cookies的使用
描述cookies的性質,解釋cookies是怎樣被用到sessions中的
Http 的狀態管理機制,指定了一種方法。這種方法可以 利用 Http 的 requests 和 responses 創建具有狀態的 session.
通常來說,Http 請求 或者 返回,兩兩之間應該是相互獨立的。然而,狀態管理機制(the state management mechanism),可以使 客戶端(clients) 和 伺服器(servers)可以通過把這些信息放進一個上下文變數中來實現狀態信息的交換,這種方式被稱作 Session.這些被用來創建 和維護session的狀態信息被稱作 cookie.
一個Cookie是一個數據片段,它可以被存儲在瀏覽器的緩存中.如果你訪問過一個網站,並且再次訪問它的時候,這些cookie數據就可以用來識別你是一個「回頭客」,說明你之前訪問過該網站。Cookies使狀態信息的存在成為可能,例如在線的購物車,可以將信息存儲起來。一個Cookie可以短期存在,為單個web頁面的session維持信息,因此 除非你關閉瀏覽器,否則一個cookie可以長期存在,維持信息 一個星期或者一年。
CookieHandler CallBack Mechanism
描述當你訪問一個頁面的時候 一個cookie handler 是如何被調用的,並且告訴你 如何設置一個 cookie handler
Http 狀態的管理是通過java SE中的java.net.CookieHandler這個類來實現的。
一個CookieHandler對象提供了一個回調機制,這些回調機制提供給 Http 狀態管理一些規則。而這些規則是在Http protocol Handler 內部實現的。
URLs 使用 HTTP 作為協議,new URL("http://example.com")新建一個URLs對象來作為例子,這個會使用HTTP protocol handler.這個 HTTP protocol handler回調 CookieHanlder對象的方法,如果CookieHandler中有設置的話,就可以進行狀態管理。
CookieHandler是一個抽象類,它有兩對相互對應的方法。
第一對:getDefault()和setDefault(cookieHandler)方法
⑸ 安卓cookie,cookie是什麼cookie是什麼
cookie只是網頁緩存,安卓是沒有cookie的。
比如一個網站xxxx.com,登陸頁為xxx.com/login.jsp,登陸方式為get,也就是xxx.com/login.jsp?username=xx&password=xx。登陸成功後從此頁都取得了Json值,但是用http來獲取另一個頁面的Json時就是null,這就是典型的cookie問題,因為這里每一個Json頁面都有cookie檢測。需要android請求的時候加上cookie在可以順利訪問。
⑹ 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之後再與伺服器進行交互。
⑺ 如何管理安卓中的Cookie
通常HttpClient中得Cookie不能直接與WebView中得Cookie共享,而且HttpClient中的Cookie需要進一步修改才能給WebView用,所以這里需要一個中間變數(這里叫做CookieMap)來管理Cookie。
每次請求的時候都要刷新CookieMap,我推薦的Cookie管理方式是只增加、修改不刪除。每次請求完成都要進行一次Cookie同步,如果app要求保持登陸狀態的需求,也可以把cookie放入Preference。