androidcookie使用
Ⅰ Android開發中怎樣使用cookieManager來管理cookie
前幾天剛研究過這個東西 我是用webview載入的頁面 我的做法就是 發送post請求登陸的時候 伺服器端如果登陸成功設置session 然後客戶端設置下cookies(這個主要是用那個JSESSIONID,因為客戶端和伺服器端識別是同一會話的方法就是這個JSESSIONID),設置cookies的方法 就參照6樓的寫法,然後用webview如下代碼設置主界面的cookies: Cookie sessionCookie = Httprequset.appCookie; //這里的cookie就是上面保存的cookie CookieSyncManager.createInstance(getApplicationContext()); CookieManager cookieManager = CookieManager.getInstance(); String cookieString = sessionCookie.getName() + "=" + sessionCookie.getValue() + " ;domain=" +sessionCookie.getDomain(); cookieManager.setCookie(url, cookieString); CookieSyncManager.getInstance().sync(); //載入地址 mWebView.loadUrl(url);這樣如果登陸成功的話你就可以在載入地址上直接獲取你設置session了 否則的話session取不到不知道能否幫到您! 查看原帖>>
Ⅱ android studio怎麼查看網路傳輸的數據
Fiddler是一個http調試代理,它能 夠記錄所有的你電腦和互聯網之間的http通訊,Fiddler 可以也可以讓你檢查所有的http通訊,設置斷點,以及Fiddle 所有的「進出」的數據(指cookie,html,js,css等文件,這些都可以讓你胡亂修改的意思)。 Fiddler 要比其他的網路調試器要更加簡單,因為它僅僅暴露http通訊還有提供一個用戶友好的格式。
對於Android開發的同事最頭疼的事情莫過於真機抓包,然後Fiddler就可以幫助你解決這個難題,下面是我在使用過程中使用的步驟:
1. Fiddler下載地址
2. 安裝到電腦,我的電腦系統是Win7
3. 打開Fiddler軟體,界面和其他抓包軟體大致一樣,效果圖如下
4. 下面我們就進入重點了,真機抓包了,首先,確保安裝 Fiddler 的電腦和你的手機在同一區域網內,因為Fiddler只是一個代理,需要將手機的代理指向 PC 機,不能互相訪問是不行的。
5. 開啟Fiddler的遠程連接,Fiddler 主菜單 Tools -> Fiddler Options…->Connections頁簽,選中Allowremote computers to connect。效果圖如下:
6. 開啟好遠程連接之後,重啟Fiddler,不然就不會更新你剛開啟的遠程配置
7. 下面開始設置手機端了,獲取PC的IP地址,我的IP地址是:192.168.2.121
8. 打開你的手機設置界面:
9. 現在就可以開始抓包了:打開Fiddler軟體:
10. 如果你覺得抓取數據還不夠方便,你可以添加過濾器:
就會只抓取這個指定IP的數據了,是不是很方便啊,呵呵!
更多查看網路傳輸的數據的方法請參考android學習手冊,例子、源碼、文檔全部搞定,採用androidstudo的目錄結構,360手機助手中下載。下面是截圖。
Ⅲ 限制用戶在不同Android設備上同時登錄App
不允許用戶同時登錄多個設備,假設目前用戶a,在設備1登錄;然後用弊稿戶a 又在設備b登錄,此時需要把設備1的用戶踢下線。
1.在用戶登錄介面里,為該次請求的客戶端創建一個session,並且生成一個與此 session 相關聯的 session id,保存起來,當該用戶再次登錄的時候,生成一個與此 session 相關聯的 session id,與之前保存起來的對比,如果不一致將新的session id 保存下來。
2.提供一個判斷用戶是否登錄的介面,在客戶端後台服務里開始一個線程定時去請求,生成一個與此 session 相關聯的 session id,再去查找時候存在該sessionid,如果不存在告訴客戶端,沒有用戶在線,否則有用戶在線。
3.如果返回的session 有值,保持登錄狀態,否則退出登錄。
Session 機制是一種伺服器端的機制,伺服器使用一種類似於散列表的結構(也可租喊孝能就是使用散列表)來保存信息。
當程序需要為某個客戶端的請求創建一個 session 的時候,伺服器首先檢查這個客戶端的請求里是否已包含了一個 session 標識 - 稱為 session id,如果已包含一個session id 則說明以前已經為此客戶端創建過 session,伺服器就按照 session id 把這個 session 檢索出來使用(如果檢索不到,可能會新建一個),如果客戶端請求不包含 session id,則為此客戶端創建一個 session 並且生成一個與此 session 相關聯的 session id,session id的值應該是一個既不會重復,又不容易被找到規律以仿造的字元串,這個 session id將被在本次響應中返回給客戶端保存。
Session的實現方式
1 ) 使用Cookie來實現
伺服器給每個 Session 分配一個唯一的 JSESSIONID,並通過 Cookie 發送給客戶端。
當客戶端發起新的請求的時候,將在 Cookie 頭中攜帶滲橡這個 JSESSIONID。這樣伺服器能夠找到這個客戶端對應的 Session。
2 )使用URL回顯來實現
URL回寫 是指伺服器在發送給瀏覽器頁面的所有鏈接中都攜帶 JSESSIONID 的參數,這樣客戶端點擊任何一個鏈接都會把 JSESSIONID 帶給伺服器。如果直接在瀏覽器中輸入 url 來請求資源,Session 是匹配不到的。Tomcat 對 Session 的實現,是一開始同時使用 Cookie 和 URL回寫機制,如果發現客戶端支持 Cookie,就繼續使用 Cookie,停止使用 URL回寫。如果發現 Cookie 被禁用,就一直使用 URL回寫。(jsp 開發處理到 Session 的時候,對頁面中的鏈接記得使用 response.encodeURL() )。
在解決問題前先了解下 Session 與 Cookie:
Cookie 和 Session都為了用來保存狀態信息,都是保存客戶端狀態的機制,它們都是為了解決 HTTP 無狀態的問題所做的努力。
Session 可以用 Cookie 來實現,也可以用 URL回寫的機制來實現。
Cookie和Session有以下明顯的不同點:
1)Cookie 將狀態保存在客戶端,Session 將狀態保存在伺服器端;
2)Cookies 是伺服器在本地機器上存儲的小段文本並隨每一個請求發送至同一個伺服器。網路伺服器用 HTTP 頭向客戶端發送 cookies,在客戶端,瀏覽器解析這些 cookies 並將它們保存為一個本地文件,它會自動將同一伺服器的任何請求縛上這些 cookies。
3)Session 是針對每一個用戶的,變數的值保存在伺服器上,用一個 sessionID 來區分是不同用戶 session 變數,這個值是通過用戶的瀏覽器在訪問的時候返回給伺服器,當客戶禁用 cookie 時,這個值也可能設置為由 get 來返回給伺服器;
4)就安全性來說:當你訪問一個使用 session 的站點,同時在自己機器上建立一個 cookie,建議在伺服器端的 SESSION 機制更安全些.因為它不會任意讀取客戶存儲的信息。
客戶端用的網路框架是okhttp3,在開發中發現,服務端沒有創建session,解決方法是將服務端返回的cookie 保存下來,然後每次發起網路請求的時候為將保存的cookie 添加到head 中。