Android 登录Web 时对cookie 处理

 更新时间:2016年07月14日 11:59:49   投稿:lqh  
本文主要介绍 Android登录web时对cookie的处理方法,这里cookie 的读写做了详细介绍,并附有代码进行讲解,希望能帮到有需要的同学

对于登录功能本身没有任何特别,使用httpclient向服务器post用户名密码即可。

但是为了保持登录的状态(在各个Activity之间切换时要让网站知道用户一直是处于登录的状态)就需要进行cookie的读写。

httpclient相当强大,读写cookie非常容易:

CookieStore cookies=((AbstractHttpClient)client).getCookieStore();//读cookie
((AbstractHttpClient) client).setCookieStore(cookies);//写cookie

另外的一个问题是,为了在各个activity之间使用一个共通的cookie,需要一个全局变量来解决问题。对于java来说,可以使用静态类,但是对于android来说,更符合android结构的作法是使用拥有这些activity的application类:

首先声明一个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登录后就可以保持登录的状态了。

ps.

从一个httpclient取得statuscode的方法:

HttpResponse response = client.execute(mypost);
int statuscode = response.getStatusLine().getStatusCode();

做的一个是要登录自己的图书馆账号,用于查看自己所借阅的书籍,

看了一下图书馆的代码,发现是POST用户名和密码,

而在代码实现主要有两个难点:一、保存账号密码 二、保存Cookie

那么 ,第一个可以使用之前提到过的Sharedpreference ,每次就直接从sharedpreference里获取账号名和密码就可以了,不需要每次都输入

第二个怎么获得服务器的cookie呢,知道这次的session id

通过Httpclient 中的getcookiestore

List<Cookie> cookies = httpclient.getCookieStore().getCookies();  
if (cookies.isEmpty()) {  
Log.i(TAG, "-------Cookie NONE---------");  
} else {          
for (int i = 0; i < cookies.size(); i ) {  
//保存cookie   
cookie = cookies.get(i);  
Log.d(TAG, cookies.get(i).getName() "=" cookies.get(i).getValue() );  
} 
 

获得了session id后,怎么再添加到我们的POST或者GET请求里面呢,

 
HttpPost httpPost = new HttpPost(访问地址); 
httpPost.setHeader("Cookie", "JSESSIONID=" + 我们在静态变量里存放的SessionId); 
HttpResponse httpResponse = httpclient.execute(httpPost); 
HttpGet request = new HttpGet(url+"?"+Params); 
    request.setHeader("Cookie",Sessionid); 

以上就是对Android 登录Web 以及登录保持,对cookie 的管理,有需要的朋友可以参考下。

相关文章

  • Android 暂停和恢复Activity

    Android 暂停和恢复Activity

    在正常的应用程序使用,前台activity有时会被其他可视化组件遮挡,从而 造成activity的暂停。例如,当一个半透明的activity打开时(如在一个风格对话框),以前的activity就暂停了。只要 activity仍然是部分可见,但目前没有获得焦点,它就依然处于暂停状态
    2016-03-03
  • android 封装抓取网页信息的实例代码

    android 封装抓取网页信息的实例代码

    android 封装抓取网页信息的实例代码,需要的朋友可以参考一下
    2013-06-06
  • Android实现压缩字符串的方法示例

    Android实现压缩字符串的方法示例

    最近在做Android开发,遇到了需要压缩字符串的功能,下面这篇文章主要给大家介绍了Android实现压缩字符串的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • Android Accessibility 辅助功能简单介绍

    Android Accessibility 辅助功能简单介绍

    这篇文章主要介绍了Android Accessibility 辅助功能简单介绍的相关资料,文字转语音,触觉反馈,手势操作,轨迹球和手柄操作,需要的朋友可以参考下
    2016-11-11
  • Kotlin函数默认值的完全讲解

    Kotlin函数默认值的完全讲解

    这篇文章主要给大家介绍了关于Kotlin函数默认值的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Kotlin具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • 玩转Android之Drawable的使用

    玩转Android之Drawable的使用

    这篇文章主要为大家详细介绍了Android之Drawable的使用方法,帮助大家系统的学习一下Drawable的使用,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 基于Flutter实现手势密码加密与解锁功能

    基于Flutter实现手势密码加密与解锁功能

    这篇文章主要介绍了如何利用Flutter实现手势密码的加密与解锁,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Android仿抖音主页效果实现代码

    Android仿抖音主页效果实现代码

    这篇文章主要介绍了Android仿抖音主页效果实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Android利用CountDownTimer实现倒计时功能 Android实现停留5s跳转到登录页面

    Android利用CountDownTimer实现倒计时功能 Android实现停留5s跳转到登录页面

    这篇文章主要为大家详细介绍了Android利用CountDownTimer实现倒计时功能,Android实现停留5s跳转到登录页面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Kotlin中的一些技巧与迂回操作分享

    Kotlin中的一些技巧与迂回操作分享

    这篇文章主要给大家介绍了关于Kotlin中的一些技巧与迂回操作的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用kotlin具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07

最新评论