android中將原生請求的介面url的cookie同步到webview中。
在我們用webView.loadUrl(url);時一般會遇到判斷是否登入的情況,但我們登入請求使用了android原生,那怎麼在web網頁中也同步登入狀態呢,下面我來解釋一番。
首先我們http請求時,會有一個請求頭(利用抓包工具可以看到),請求頭裡面會有一個cookie,cookie的值是根據主域名domain而來的,他有一個時效,一般後臺預設設定30分鐘。所以我們需要拿到原生請求的url的cookie同步給webView.loadUrl(url);的url。下面貼程式碼。
syncCookie();//先呼叫同步cookie
webView.loadUrl(url);//再調此步驟
//向webview同步傳遞cookie
private synchronized void syncCookie(){
CookieSyncManager.createInstance(webView.getContext());
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeAllCookie();
CookieStore cookieStore = OkGo.getInstance().getCookieJar().getCookieStore();
HttpUrl httpUrl = HttpUrl.parse(ApiConstant.getUserInfo);
List<Cookie> cookieList = cookieStore.getCookie(httpUrl);
for (Cookie cookie:cookieList){
String[] cookies=cookie.toString().split(";");
if(cookies!=null){
for(String c:cookies){
//給webview載入的url的domain設定原生請求介面的cookie。
cookieManager.setCookie(cookie.domain(), c);
}
}
}
CookieSyncManager.getInstance().sync();
}
//清除Cookie
private void removeCookie(String url) {
HttpUrl httpUrl = HttpUrl.parse(url);
CookieStore cookieStore = OkGo.getInstance().getCookieJar().getCookieStore();
cookieStore.removeCookie(httpUrl);
}
注意:我這裡使用了okgo的網路請求框架,注意要在Application的onCreate裡面配置okgo管理cookie才有效。
相關文章
- Android中清楚Cookie和WebView的快取AndroidCookieWebView快取
- android httpclient與webview cookie同步AndroidHTTPclientWebViewCookie
- FastAPI中請求URL傳參ASTAPI
- 解決URL請求中的中文亂碼問題
- spring mvc中獲取請求URLSpringMVC
- Android Webview攔截ajax請求AndroidWebView
- IE核心傳送ajax請求時不會將url中的引數編碼
- Java後端中的請求最佳化:從請求合併到非同步處理的實現策略Java後端非同步
- 利用 Chrome 開發者工具遠端除錯 Android 中的原生 WebViewChrome除錯AndroidWebView
- react中請求介面的封裝React封裝
- 如何 把下面這個url 重寫 用response 重寫到請求中...
- 在 DotNetty 中實現同步請求Netty
- vue 中promise 非同步請求資料VuePromise非同步
- iOS 同步請求 非同步請求 GET請求 POST請求iOS非同步
- URL請求不能解決中文請求的問題
- Android 中 WebView 的除錯方法AndroidWebView除錯
- Android中WebView的使用指南:AndroidWebView
- swift中webview的URL帶中文或者特殊字元的處理SwiftWebView字元
- 後端請求中的非同步計算與平行計算後端非同步
- Cookie 與 HTTP請求CookieHTTP
- Android中的幾種網路請求方式詳解Android
- Android中WebView使用解析AndroidWebView
- SPA單應用-請求介面URL結構設計
- dart原生請求Dart
- iOS 原生請求iOS
- php下請求url的幾種方式PHP
- Android WebView 中的 Html 網頁定位操作AndroidWebViewHTML網頁
- 淺嘗flutter中的http請求FlutterHTTP
- 原生Js呼叫Fetch Api請求介面(新的Ajax解決方案)JSAPI
- Android WebView儲存Cookie登入AndroidWebViewCookie
- 將ffmpeg引入到Android工程中Android
- 【譯】使用 WebView2 將最好的 Web 帶到 .NET 桌面應用程式中WebView
- 非同步請求覆蓋如何測試到非同步
- 過濾器中獲取form表單或url請求資料過濾器ORM
- Envoy 代理中的請求的生命週期
- 如何在 PyQt 中實現非同步資料庫請求QT非同步資料庫
- Android中Retrofit框架的基礎使用(請求資料並解析)Android框架
- SpringMVC中如何傳送GET請求、POST請求、PUT請求、DELETE請求。SpringMVCdelete