問題描述:
最近專案上需要使用webview載入乙個郵件功能,登陸時候會獲取乙個郵件登陸的位址,第一次開啟沒有問題,第二次開啟就提示「cookie not matched」
開始採取的措施是每次開啟url時儲存cookie,測試時發現並沒有生效,且是概率性的;
在oncreate裡初始化相關引數
獲取cookie並儲存
下次進入時候解析cookie並設定cookie
然而並沒有解決cookie問題,最後沒辦法,動用抓包工具fiddler4,從抓包工具資料看,少設定了乙個cookie
原來時因為setcookie這個api一次只能新增乙個cookie,多個cookie需要依次新增,至此問題解決;
通常我們在登入時獲取到使用者的cookie和token資訊,然後將其儲存到sdcard的webview快取檔案當中,這樣在載入網頁時,webview會自動將當前url的本地cookie資訊放在http請求的request中,傳遞給伺服器。
流程如下:
1、android客戶端給webview設定cookie的**如下:
public boolean synccookie()
return textutils.isempty(newcookie) ? false : true;
}
cookie設定必須放在wevsettings設定和webview.loadurl()方法之前;
當cookie包含了多個鍵值對資訊時,需要多次呼叫setcookie方法,而不是使用下面這種新增分號的形式拼接字串:
website_name=782;
website_token=8f47c21816cb596c93b97d64adb7eb9b;
jsessionid=4315103e6ab51de5ba3d910772735d1c;
website_name=782;
website_token=294539a5631280a2cdbf99f0e906dc21;
在api 21之後,webview實現了自動同步cookie,不需要手動同步,所以,使用時可以新增版本判斷;
實際使用過程中,我在展示web的activity中通過多次呼叫setcookie的方法設定cookie,通過native介面多次進入web頁面,發現loadurl時,cookie值存在重複,比如:
第一次進入web:
website_name=782;
website_token=67715fb70d9e92cd7f9814dfdb14ecf4;
website_source=apk;
第二次進入web:
website_name=782;
website_token=67715fb70d9e92cd7f9814dfdb14ecf4;
website_source=apk;
jsessionid=4c17030f8e622f18dcdda8b58ee7ab3d;
website_token=67715fb70d9e92cd7f9814dfdb14ecf4;
website_name=782
出現問題:set-value存在重複,這樣導致,如果切換賬號進入web,會出現資料錯亂的情景,所以,如果採用在展示web的activity中設定cookie的方式,需在ondestroy方法中清除cookie。
websettings settings = webview.getsettings();
string ua = settings.getuseragentstring();
2、cookiemanager會將這個cookie存入該應用程式/data/data/databases/目錄下的webviewcookieschromium.db資料庫的cookies表中
3、開啟網頁,webview從資料庫中讀取該cookie值,放到http請求的頭部,傳遞到伺服器
4、客戶端可以在登出登入時清除該應用程式用到的所有cookies,避免切換賬號等操作情景產生快取問題。
cookiemanager.removeallcookie();
補充:webview獲取載入網頁的cookie:
private
class
mywebviewclient
extends
webviewclient
public
void
onpagefinished(webview view, string url)
}
fiddler4簡單設定和使用
1 . 首先,確保安裝 fiddler 的電腦和你的手機在同一區域網內(如果電腦有線連線和wifi不是區域網,就用手機連wifi,然後把手機通過usb共享網路給電腦,這樣電腦也能聯網了),因為fiddler只是乙個**,需要將手機的**指向 pc 機,不能互相訪問是不行的。
2. 開啟fiddler的遠端連線,fiddler 主選單 tools -> fiddler options…-> connections頁籤,選中allowremote computers to connect。效果圖如下:
3. 開啟好遠端連線之後,重啟fiddler,不然就不會更新你剛開啟的遠端配置
4. 下面開始設定手機端了,獲取pc的ip位址,我的ip位址是:192.168.1.123
5. 開啟你的手機設定介面:
6.這裡就可以抓包了
webView怎麼儲存設定Cookie
今天朋友問到了webview怎麼設定儲存cookie的問題,因為之前在網上搜尋了很多種方法,經過反覆試驗整理出乙個簡單好用的方法,廢話不多說,沒圖沒 說個卵 重點關注圖中藍色部分 這行 中 string cookiestring access token token path 只要改這裡就ok st...
webView怎麼儲存設定Cookie
今天朋友問到了webview怎麼設定儲存cookie的問題,因為之前在網上搜尋了很多種方法,經過反覆試驗整理出乙個簡單好用的方法,廢話不多說,沒圖沒 說個卵 重點關注圖中藍色部分 這行 中 string cookiestring access token token path 只要改這裡就ok st...
關於COOK100品牌介紹
cook100酷克壹佰 國內最好的烤肉料!cook100有10多種味道的正宗烤肉料,cook100紐奧良烤雞醃料因其味道好,評價高!在全國各地十分暢銷。cook100酷克壹佰致力於成為國內家用烤肉料的領導品牌。經過大量消費者調查的結果,選擇cook100的理由 1.味道好。他的味道是公認的好,也是很...