Android的Volley框架实现获取cookie并同步到Webview的实现
2017-04-26 09:55
375 查看
一..Session的获取:
使用说明:通过Volley可以获取到请求的SessionID,你可以用这个SessionID访问Webview中的网页,不必再次重复登陆。
1.重写Volley的parseNetworkResponse方法。
2.用到的保存session方法CommonUtil.saveSettingNote()源码地址:将Session保存在本地的小方法
3.实现关键源码:
二、上面求实现了获取SessionID和保存。接下来写个应用场景,在Webview中同步我们的Session,实现免重复登陆,访问同一个项目中的网页。也可以实现在Native安卓登录界面,发起登陆请求,成功登陆后,可直接访问Webview中的网页,因为有Session的同步,所有不会被拦截而重复登陆。
1.同步cookie方法:
/**
* 将cookie同步到WebView
*
* @param url
* WebView要加载的url
* @param cookie
* 要同步的cookie
* @return true 同步cookie成功,false同步cookie失败
*/
public void synCookies(String url,String cookiestr) {
CookieSyncManager.createInstance(this);
cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
// 每次移除会有Cookie不一致问题,注释该地方
// cookieManager.removeSessionCookie();// 移除
cookieManager.setCookie(url,cookiestr);
CookieSyncManager.getInstance().sync();
}2.在Webview的loadUrl()方法执行之前同步Cookie(必须):
取到本地存储Session小方法CommonUtil.getSettingNote()源码地址:取出方法,点击进入
synCookies(url,CommonUtil.getSettingNote(WebViewActivity.this, "CookieSetting", "cookies"));
webView.loadUrl(url);
使用说明:通过Volley可以获取到请求的SessionID,你可以用这个SessionID访问Webview中的网页,不必再次重复登陆。
1.重写Volley的parseNetworkResponse方法。
2.用到的保存session方法CommonUtil.saveSettingNote()源码地址:将Session保存在本地的小方法
3.实现关键源码:
private boolean sendRequestByVolleyPost(final String url, final Map<String, String> params) { StringRequest stringRequest = new StringRequest(Method.POST, url, new Listener<String>() { @Override public void onResponse(String str) { //你的其他业务逻辑 }, new ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Toast.makeText(LoginActivity.this, "服务器连接失败", Toast.LENGTH_SHORT).show(); } }) { @Override protected Response<String> parseNetworkResponse(NetworkResponse response) { try { // 从服务器取cookie Map<String, String> responseHeaders = response.headers; //这里就是cookie,里面的SessionID不为空就说明取到了 String rawCookies = responseHeaders.get("Set-Cookie"); // 保存Cookie if (rawCookies != null) { cookieMap.put("cookies", rawCookies); //不懂sharePreference保存的,可看下我的博客里文章《Android本地存储数据方法》 CommonUtil.saveSettingNote(LoginActivity.this, "CookieSetting", cookieMap); } String dataString = new String(response.data, "UTF-8"); Log.i("cookie", "response.data数据:" + dataString); return Response.success(dataString, HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } } }; // 设置请求的Tag标签,可以在全局请求队列中通过Tag标签进行请求的查找 stringRequest.setTag("Login"); // 将请求加入全局队列中 VolleyApplication.getHttpQueues().add(stringRequest); return true; }
二、上面求实现了获取SessionID和保存。接下来写个应用场景,在Webview中同步我们的Session,实现免重复登陆,访问同一个项目中的网页。也可以实现在Native安卓登录界面,发起登陆请求,成功登陆后,可直接访问Webview中的网页,因为有Session的同步,所有不会被拦截而重复登陆。
1.同步cookie方法:
/**
* 将cookie同步到WebView
*
* @param url
* WebView要加载的url
* @param cookie
* 要同步的cookie
* @return true 同步cookie成功,false同步cookie失败
*/
public void synCookies(String url,String cookiestr) {
CookieSyncManager.createInstance(this);
cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
// 每次移除会有Cookie不一致问题,注释该地方
// cookieManager.removeSessionCookie();// 移除
cookieManager.setCookie(url,cookiestr);
CookieSyncManager.getInstance().sync();
}2.在Webview的loadUrl()方法执行之前同步Cookie(必须):
取到本地存储Session小方法CommonUtil.getSettingNote()源码地址:取出方法,点击进入
synCookies(url,CommonUtil.getSettingNote(WebViewActivity.this, "CookieSetting", "cookies"));
webView.loadUrl(url);
相关文章推荐
- Android Cookie实现webview的同步登陆(主要是避免webview的再次登录)解决
- android 中对于采用okhttp时获取cookie并放入webview实现跳过登陆显示页面的功能
- android 加载webview时,保存并同步cookie实现免登陆
- [Android] Webview利用CookieSyncManager获取或设置Cookies的策略
- 关于Android 中如何共享原生httpClient获取的cookie并与webView共享
- android - Volley框架请求获取Cookie和带Cookie请求链接和带参数Params
- Android Webview新认识(获取cookie,所加载网页内的链接的url)
- 关于Android webview 的cookie同步的坑
- Andriod中WebView加载登录界面获取Cookie信息并同步保存,使第二次不用登录也可查看个人信息。
- Android WebView获取cookie
- Android WebView 实现同步登陆和注销登录
- Andriod中WebView加载登录界面获取Cookie信息并同步保存,使第二次不用登录也可查看个人信息。
- android webview里获取和设置cookie
- android httpclient与webview cookie同步
- WebView同步App登陆后获取到的Cookie
- android webview cookie 同步时有时候会出现同步不成功的问题解决
- android WebView登录状态session id 和cookie同步
- Android本地登录与WebView网页登陆同步问题(cookie同步问题)
- 部分android手机WebView无法成功同步Cookie问题的解决方案(5.0系统以上)
- android webview cookie同步