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
- 大叔也說Xamarin~Android篇~為HttpClient共享Session,android與api的session共享機制AndroidHTTPclientSessionAPI
- Session丟失的解決辦法小結 (轉)Session
- Android: HttpClient與Webview共享cookiesAndroidHTTPclientWebViewCookie
- session丟失與解決辦法的資料Session
- Session莫名丟失的原因及解決辦法Session
- 從session中獲取資料Session
- asp.net Session丟失的解決辦法小結ASP.NETSession
- PHP中SESSION丟失(不能跨頁面傳遞)解決辦法PHPSession
- kill session之後,會話一直無法釋放的巧妙解決辦法(lsof)Session會話
- 在ActionForm中如何獲取session中的資料?ORMSession
- 負載均衡伺服器session共享的解決方案 (轉載)負載伺服器Session
- session 共享Session
- PHP7中session的值跨頁傳遞失敗的解決辦法PHPSession
- Session容易丟失的一些常見解決辦法Session
- SpringMVC - controller中獲取sessionSpringMVCControllerSession
- 【Struts2】Session的獲取Session
- memcached-session-manager session共享Session
- SSH獲取SESSION時報NullPointExceptionSessionNullException
- 求救!Javabean中能否獲取某個session的值??JavaBeanSession
- Asp.net中多專案共享Session (轉)ASP.NETSession
- 使用Memcached實現Session共享Session
- 大叔也說Xamarin~Android篇~原生登陸與WebView的網站如何共享SessionAndroidWebView網站Session
- Session分散式共享 = Session + Redis + NginxSession分散式RedisNginx
- Spring Session+Spring Data Redis 解決分散式系統架構中 Session 共享問題SpringSessionRedis分散式架構
- Jenkins解決無法獲取外掛的辦法Jenkins
- 如何運用PHP+REDIS解決負載均衡後的session共享問題PHPRedis負載Session
- 前後端頁面分離導致session無法正常獲取的問題後端Session
- 解決php的session無法儲存到redisPHPSessionRedis
- 分散式中使用 Redis 實現 Session 共享(中)分散式RedisSession
- IQKeyboardManager 獲取完成按鈕的解決辦法
- 使用memorycache作為session共享配置Session
- 獲取指定pid的session的pga/uga使用情況Session
- 關於filter獲取session的問題!!!FilterSession
- session共享問題???Session
- RedHat提供ADSL共享上網的解決辦法(轉)Redhat
- win7DHCP獲取不到ip的解決辦法Win7
- php中Session使用方法詳解PHPSession