android 登陆验证Cookie的应用
2014-06-26 16:25
176 查看
android 登陆 的三个难点: 用户验证 -----> 保存账号密码 、保存Cookie -----> 保持用户的登陆状态
获取服务器那边的Cookie:
执行AsycTasker代码:
以上是获取服务器端的Cookie(Session),那如何把他 通过Http请求带到服务器端呢?
如何保持登陆状态呢?
为了在各个activity之间使用一个共通的cookie,需要一个全局变量来解决问题 (判断用户是否登陆)
首先声明一个application类用来存取cookie:
另外,要在AndroidManifest.xml文件中将上面声明的这个类绑定到包含所有activity的application上,方法是为application标签加 android:name=".myApp"
这样就可以在Activity中使用这个“全局变量”了:
经过以上的步骤,android程序完成一个Web登录后就可以保持登录的状态了。
如果想控制 还未登陆 某些页面不可以访问 某些页面可以访问,那就判断该次用户的操作是否保存了Session或Cookie.如果保存了,说明已经登陆了,如果为null 说明还未登录,此时应该跳转到登陆页面,登陆后才可以进行以后的操作.
获取服务器那边的Cookie:
/** * 验证用户是否登陆成功. */ public class MyAsycTask extends AsyncTask<String, Integer, String>{ @Override protected String doInBackground(String... params) { // TODO Auto-generated method stub String result = null; int statusCode = 0; HttpPost mPost = new HttpPost(url); try { DefaultHttpClient client = new DefaultHttpClient(); List<BasicNameValuePair> pairs = new ArrayList<BasicNameValuePair>(); pairs.add(new BasicNameValuePair("username", "wqtest12@ddaidai.com")); pairs.add(new BasicNameValuePair("password", "111111")); mPost.setEntity(new UrlEncodedFormEntity(pairs, HTTP.UTF_8)); HttpResponse httpResponse = client.execute(mPost); statusCode = httpResponse.getStatusLine().getStatusCode(); // 处理返回的httpResponse信息 if (statusCode == 200) { result = EntityUtils.toString(httpResponse.getEntity()); JSONObject jsonObject = new JSONObject(result); int flag = jsonObject.getInt("ret"); if(flag > 0){ Log.e("Test", "登陆成功.."); }else{ Log.e("Test", "登陆失败.."); } Cookie cookie; String cookname,cookvalue; List<Cookie> cookies = client.getCookieStore().getCookies(); if (cookies.isEmpty()) { Log.e("Test", "-------Cookie NONE---------"); } else { for (int i = 0; i < cookies.size(); i++) { cookie = cookies.get(i); cookname = cookie.getName().trim(); cookvalue = cookie.getValue().trim(); String name = cookname; String value = cookvalue; Log.e("Test","name==="+name+" value===="+value+" i======"+i); } } } else result = "networkerror"; } catch (ConnectTimeoutException e) {// 超时或网络连接出错 result = "timeouterror"; } catch (ClientProtocolException e) { result = "networkerror"; } catch (Exception e) { result = "readerror"; Log.e("Test", e.getMessage()); } finally { mPost.abort(); } return result; } }
执行AsycTasker代码:
new MyAsycTask().execute();
以上是获取服务器端的Cookie(Session),那如何把他 通过Http请求带到服务器端呢?
HttpPost httpPost = new HttpPost(访问地址); httpPost.setHeader("Cookie", "JSESSIONID=" + 我们在静态变量里存放的SessionId); HttpResponse httpResponse = httpclient.execute(httpPost); (这里的client一定是和前面的HttpClient对象是同一个)
HttpGet 请求. HttpGet request = new HttpGet(url+"?"+Params); request.setHeader("Cookie",Sessionid); <pre name="code" class="html">(这里的client一定是和前面的HttpClient对象是同一个)
如何保持登陆状态呢?
为了在各个activity之间使用一个共通的cookie,需要一个全局变量来解决问题 (判断用户是否登陆)
首先声明一个application类用来存取cookie:
public class myApp extends Application { private CookieStore cookies; public CookieStore getCookie(){ return cookies; } public void setCookie(CookieStore cks){ cookies = cks; } }
另外,要在AndroidManifest.xml文件中将上面声明的这个类绑定到包含所有activity的application上,方法是为application标签加 android:name=".myApp"
这样就可以在Activity中使用这个“全局变量”了:
//设置cookie myApp appCookie = ((myApp)getApplication()); appCookie.setCookie(cookies); //读取cookie myApp appCookie = ((myApp)getApplicationContext()); cookies = appCookie.getCookie();
经过以上的步骤,android程序完成一个Web登录后就可以保持登录的状态了。
如果想控制 还未登陆 某些页面不可以访问 某些页面可以访问,那就判断该次用户的操作是否保存了Session或Cookie.如果保存了,说明已经登陆了,如果为null 说明还未登录,此时应该跳转到登陆页面,登陆后才可以进行以后的操作.
相关文章推荐
- Discuz!登陆验证Cookie机制分析
- php cookie应用实例--登录验证
- Android平台根据分辨率计算屏幕尺寸,基于物理尺寸来验证手机和平板应用合并的可行性
- Android中图像变换Matrix的原理、代码验证和应用(三)
- Android中图像变换Matrix的原理、代码验证和应用(二)
- cookie使用总结--不需要在每页写入登陆验证!
- Android平台根据分辨率计算屏幕尺寸,基于物理尺寸来验证手机和平板应用合并的可行性
- 数据库应用--回顾SQLite数据库--通过按钮来进行对数据库的管理以及登陆验证操作
- 基于cookie验证的php应用的一种SSO解决方案
- Android中图像变换Matrix的原理、代码验证和应用(二)
- Android应用开发中使用Cookie
- android获取web服务器端session并验证登陆
- Android平台根据分辨率计算屏幕尺寸,基于物理尺寸来验证手机和平板应用合并的可行性
- Android平台根据分辨率计算屏幕尺寸,基于物理尺寸来验证手机和平板应用合并的可行性
- 【转】Android中图像变换Matrix的原理、代码验证和应用
- Discuz!登陆验证Cookie机制分析
- Android中图像变换Matrix的原理、代码验证和应用(三)
- 新的Android应用 记账理财助手 登陆国内各大市场啦。
- 关于sensor在android系统原生应用中的使用(从应用层面验证sensor移植)
- Android中图像变换Matrix的原理、代码验证和应用(三)