Android WebView 实现同步登陆和注销登录
2016-11-10 17:20
537 查看
最近老大要把APP的界面大部分替换成H5的界面,但是登录的操作还是要自己去请求PHP的接口,不过登录的界面也是H5,这就显得有点尴尬啦,这种操作会导致,你的登录操作虽然是成功的,但是H5的界面是不会有任何的变化的,既然我们登录成功,那么肯定是希望H5界面会显示用户的一些信息,比如说头像,昵称什么的,在这里说一下ios没有这种情况的产生。
既然已经产生了这种问题,身为程序员的我们当然要解决啦,这种情况我也是刚刚接触,我们服务气的人员说是seesion的问题,然后我稍微百度了一下确实是这样的,既然知道了问题的原因接下来就好办了。
我简单说一下解决的方案(网络框架我用的Volley),方案如下:
1.在登录成功后获取seesion_id。
2.将seesion_id储存起来(随你储存在哪里,只要你能在其他地方使用,我是将seesion_id储存在SharedPreferences,seesion_id其实就是一个字符串)。
3.在调用webView的loadUrl()方法之前将这个seesion_id添加到cookie当中;
然后问题就解决了。
方案已经给出,下面说一下具体的实现过程:
第一步获取seesion_id:
前面已经说了我用的是Volley框架,这里只介绍在Volley中seesion_id的获取方法,具体方法如下(见代码):
第二步:将seesion_id储存起来(怎么储存我就不说了);
第三步:将这个seesion_id添加到cookie当中操作如下:
然后调用加载url的方法loadUrl();
最后说一下注销,注销的方法和这个差不多,如下:
然后调用加载url的方法loadUrl();
既然已经产生了这种问题,身为程序员的我们当然要解决啦,这种情况我也是刚刚接触,我们服务气的人员说是seesion的问题,然后我稍微百度了一下确实是这样的,既然知道了问题的原因接下来就好办了。
我简单说一下解决的方案(网络框架我用的Volley),方案如下:
1.在登录成功后获取seesion_id。
2.将seesion_id储存起来(随你储存在哪里,只要你能在其他地方使用,我是将seesion_id储存在SharedPreferences,seesion_id其实就是一个字符串)。
3.在调用webView的loadUrl()方法之前将这个seesion_id添加到cookie当中;
然后问题就解决了。
方案已经给出,下面说一下具体的实现过程:
第一步获取seesion_id:
前面已经说了我用的是Volley框架,这里只介绍在Volley中seesion_id的获取方法,具体方法如下(见代码):
StringRequest request = new StringRequest(StringRequest.Method.POST, url, new Response.Listener<String>() { @Override public void onResponse(String s) { Logger.e("url==", s); JSONObject object = null; try { object = new JSONObject(s); if (object.getInt("status") != 202) { Toast.makeText(context, object.optString("msg"), Toast.LENGTH_SHORT).show(); } else { if (callback != null) { callback.onSuccess(s); } } } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { if (callback != null) { callback.onError(volleyError); } } }) { @Override protected Map<String, String> getParams() throws AuthFailureError { return params; } @Override protected Response<String> parseNetworkResponse(NetworkResponse response) { //在这里获取seesion_id Map<String, String> headers = response.headers; String s = headers.get("Set-Cookie"); cookies = s.substring(0, s.indexOf(";")); if (cookies != null) { SharedPreferenceUtils.setCookie(cookies, context); } return super.parseNetworkResponse(response); } }; requestQueue.add(request);
第二步:将seesion_id储存起来(怎么储存我就不说了);
第三步:将这个seesion_id添加到cookie当中操作如下:
CookieSyncManager.createInstance(mActivity);
CookieManager cookieMgr = CookieManager.getInstance();
cookieMgr.setAcceptCookie(true);
cookieMgr.setCookie(url, cookie);
CookieSyncManager.getInstance().sync();
然后调用加载url的方法loadUrl();
最后说一下注销,注销的方法和这个差不多,如下:
CookieSyncManager.createInstance(mActivity); CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); cookieManager.removeSessionCookie();// 移除 cookieManager.removeAllCookie();
然后调用加载url的方法loadUrl();
相关文章推荐
- Android Cookie实现webview的同步登陆(主要是避免webview的再次登录)解决
- Android本地登录与WebView网页登陆同步问题(cookie同步问题)
- android 加载webview时,保存并同步cookie实现免登陆
- Android本地登录与WebView网页登陆同步问题(cookie同步问题)
- android WebView登录状态session id 和cookie同步
- 【android-Webview】设置多个cookie,实现webview中保存登录信息
- Android原生登录同步到webview的网页
- android 通过设置cookie解决app 登录后WebView还要重新登陆问题
- android 中对于采用okhttp时获取cookie并放入webview实现跳过登陆显示页面的功能
- android webview读本地html、css等资源并实现登陆
- Android的Volley框架实现获取cookie并同步到Webview的实现
- Android webview实现QQ一键登录授权
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- 在android webview实现截屏的手动tounchmove裁剪图片
- Android下使用最新FaceBook SDK 3.0(二)使用facebook实现登录注销
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- [Android实例] webview 实现翻页功能
- Android:WebView带划屏手势的浏览器实现
- [Android实例] 关于webview如何自动登录保存登录信息
- android webview实现文本选择