Android的Volley框架实现获取cookie并同步到Webview的实现
来源:互联网 发布:网页淘宝自动跳转app 编辑:程序博客网 时间:2024/05/22 12:59
一..Session的获取:
使用说明:通过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>() {@Overridepublic void onResponse(String str) {//你的其他业务逻辑}, new ErrorListener() {@Overridepublic void onErrorResponse(VolleyError error) {Toast.makeText(LoginActivity.this, "服务器连接失败", Toast.LENGTH_SHORT).show();}}) {@Overrideprotected Response<String> parseNetworkResponse(NetworkResponse response) {try {// 从服务器取cookieMap<String, String> responseHeaders = response.headers;//这里就是cookie,里面的SessionID不为空就说明取到了String rawCookies = responseHeaders.get("Set-Cookie");// 保存Cookieif (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);
2 0
- Android的Volley框架实现获取cookie并同步到Webview的实现
- Android Cookie实现webview的同步登陆(主要是避免webview的再次登录)解决
- WebView同步App登陆后获取到的Cookie
- volley框架cookie的获取与设置
- Android同步Cookie到WebView
- android 加载webview时,保存并同步cookie实现免登陆
- Volley和xUtils取cookie的实现
- 关于Android 中如何共享原生httpClient获取的cookie并与webView共享
- Android开发——webview获取H5的Cookie并保存在本地
- 关于Android webview 的cookie同步的坑
- Volley框架请求取消的实现
- 【WebView的cookie机制 】轻松搞定WebView cookie同步问题
- 【WebView的cookie机制 】轻松搞定WebView cookie同步问题
- android的volley框架
- android的volley框架
- 简单实现android的WebView
- Android WebView获取cookie
- Android WebView中Cookie的获取和设置
- 菩萨蛮.黄鹤楼
- 告诉孩子,我们为什么要读书?一位爸爸接地气的回答
- Android中的IPC机制
- C++:拷贝构造函数
- javaee学习笔记一
- Android的Volley框架实现获取cookie并同步到Webview的实现
- Activity的生命周期和启动模式
- idea webStorm license server 激活
- win10开启蓝牙虚拟串口
- scikit-learn中PCA的使用方法
- 大数据运算
- H5项目常见问题汇总及解决方案
- View的工作原理
- Java?时间