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才有效。
相關文章
- FastAPI中請求URL傳參ASTAPI
- spring mvc中獲取請求URLSpringMVC
- Java後端中的請求最佳化:從請求合併到非同步處理的實現策略Java後端非同步
- Android 中 WebView 的除錯方法AndroidWebView除錯
- Android中WebView的使用指南:AndroidWebView
- 在 DotNetty 中實現同步請求Netty
- react中請求介面的封裝React封裝
- URL請求不能解決中文請求的問題
- vue 中promise 非同步請求資料VuePromise非同步
- Android WebView 中的 Html 網頁定位操作AndroidWebViewHTML網頁
- Cookie 與 HTTP請求CookieHTTP
- 後端請求中的非同步計算與平行計算後端非同步
- SPA單應用-請求介面URL結構設計
- 原生Js呼叫Fetch Api請求介面(新的Ajax解決方案)JSAPI
- php下請求url的幾種方式PHP
- 將ffmpeg引入到Android工程中Android
- Flutter 與 Android 原生 WebView 對比FlutterAndroidWebView
- dart原生請求Dart
- 非同步請求覆蓋如何測試到非同步
- 非同步請求與中斷 ( XHR,Axios,Fetch對比 )非同步iOS
- 【譯】使用 WebView2 將最好的 Web 帶到 .NET 桌面應用程式中WebView
- vue中axios請求的封裝VueiOS封裝
- 淺嘗flutter中的http請求FlutterHTTP
- Android小知識-剖析Retrofit中網路請求的兩種方式Android
- 從 axios 原始碼中瞭解到的 Promise 鏈與請求的取消iOS原始碼Promise
- Spring中@InitBinder將請求引數轉換為各自的型別Spring型別
- Android 8.0上webView載入url,不回撥onPageFinishedAndroidWebView
- SpringMVC中如何傳送GET請求、POST請求、PUT請求、DELETE請求。SpringMVCdelete
- 從輸入url到傳送請求發生了什麼
- vue在元件銷燬的時候將非同步請求撤銷Vue元件非同步
- 過濾器中獲取form表單或url請求資料過濾器ORM
- 原生ajax請求&JSONPJSON
- Envoy 代理中的請求的生命週期
- 介面測試--apipost中cookie管理器的使用APICookie
- 如何在 PyQt 中實現非同步資料庫請求QT非同步資料庫
- RESTFUL風格的URL請求及引數接收REST
- python全棧02-----url_for,HTTP的請求方法Python全棧HTTP
- ASP.NET Core獲取請求完整的UrlASP.NET