热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Android登录Web时对cookie处理

对于登录功能本身没有任何特别,使用httpclient向服务器post用户名密码即可。 但是为了保持登录的状态(在各个Activity

对于登录功能本身没有任何特别,使用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 COOKIEs = httpclient.getCOOKIEStore().getCOOKIEs();  
if (COOKIEs.isEmpty()) {  
Log.i(TAG, "-------COOKIE NONE---------");  
} else {          
for (int i = 0; i 
 
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 的管理,有需要的朋友可以参考下。


推荐阅读
author-avatar
2012-末日审判
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有