android中HttpClient獲取Session然後使用 WebView共享session的解決辦法(轉)
android開始專案中,通常會遇到既使用HttpClient,又使用WebView的情況。一個典型的例子是,使用HttpClient登入,WebView展示登入後的某些頁面,這個時候,如果直接不加任何處理的話會發現在使用WebView展示的時候,會提示沒有登入你的應用系統,造成這種結果的原因就是使用HttpClient登入的session和WebView訪問伺服器的session並不是同一個,解決辦法如下。
HttpClient 登入程式碼如下
DefaultHttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
HttpContext context = new BasicHttpContext();
CookieStore cookieStore = new BasicCookieStore();
context.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
HttpResponse response = client.execute(get, context);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 根據你的邏輯,判斷返回的值是不是表示已經登入成功
if (isLoginSuccess()) {
List cookies = cookieStore.getCookies();
if (!cookies.isEmpty()) {
for (int i = cookies.size(); i > 0; i --) {
Cookie cookie = cookies.get(i - 1);
if (cookie.getName().equalsIgnoreCase("jsessionid")) {
// 使用一個常量來儲存這個cookie,用於做session共享之用
Utils.appCookie = cookie;
}
}
}
}
}
WebView程式碼
String url4load = "登入域名下你要訪問的地址";
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
Cookie sessionCookie = Utils.appCookie;
if (sessionCookie != null) {
String cookieString = sessionCookie.getName() + "=" + sessionCookie.getValue() + "; domain=" + sessionCookie.getDomain();
cookieManager.setCookie(url4Load, cookieString);
CookieSyncManager.getInstance().sync();
}
相關文章
- 當laravel獲取不到session的三種解決辦法LaravelSession
- 從session中獲取資料Session
- session 共享Session
- Spring Session+Spring Data Redis 解決分散式系統架構中 Session 共享問題SpringSessionRedis分散式架構
- PHP7中session的值跨頁傳遞失敗的解決辦法PHPSession
- 前後端頁面分離導致session無法正常獲取的問題後端Session
- 如何運用PHP+REDIS解決負載均衡後的session共享問題PHPRedis負載Session
- 獲取本session的sid和serial#Session
- session共享問題???Session
- Grails通過sessionId獲取session物件AISession物件
- IQKeyboardManager 獲取完成按鈕的解決辦法
- Appium Android 獲取WebView元素的方法APPAndroidWebView
- SpringBoot2.x 整合Spring-Session實現Session共享Spring BootSession
- 配置session——快取Session快取
- 使用 Dingo 後 Handler 中 render 方法無效的解決辦法Go
- keycloak~關於session idle和session max的解釋Session
- Android 如何設計使用者Session管理?AndroidSession
- 多個 Laravel 與 Lumen session 共享LaravelSession
- spring-session-data-redis共享方案SpringSessionRedis
- 通過redis實現session共享RedisSession
- WebApi和Mvc的Session一直獲取不到問題WebAPIMVCSession
- SSH在呼叫Service時獲取為空-解決辦法
- 解決“su: cannot open session: Permission denied”Session
- cookie與session的使用CookieSession
- Many To Many could not initialize proxy – no Session的解決方法Session
- 使用requests庫解決Session物件設定超時的問題Session物件
- Android中WebView的使用指南:AndroidWebView
- 解決requests庫中session.verify引數失效的問題Session
- 前後端分離解決session跨域丟失問題後端Session跨域
- Spring Boot前後端分離專案Session問題解決Spring Boot後端Session
- 從koa-session原始碼解讀session原理Session原始碼
- 快速實現 Tomcat 叢集 Session 共享TomcatSession
- Spring Boot 2 + Redis 處理 Session 共享Spring BootRedisSession
- 獲取cookie辦法Cookie
- 【轉】 android獲取裝置唯一標識完美解決方案Android
- Cookie & Session詳解CookieSession
- v$Session詳解Session
- laravel 使用 axios 通過 put 上傳檔案獲取不到資料的解決辦法LaraveliOS
- vue 解決不能攜帶session問題VueSession