对于登录功能本身没有任何特别,使用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);

更多相关文章

  1. Android登录功能实现
  2. Android(安卓)WebView保存Cookie登录
  3. Android下集成Paypal支付
  4. Android(安卓)博客园客户端 (七)登录功能
  5. Android中的 Thread + Handler 线程简单应用范例
  6. Android判断两次输入密码是否相等并且不为空
  7. Android+本地记事本(上)------实现登陆注册
  8. android实现session保持【以及web登陆保持】
  9. Android(安卓)ApiDemos示例解析(21):App->Device Admin

随机推荐

  1. 快速排序就这么简单
  2. PMP学习之49个子过程俚语版理解与速记
  3. 移动商城项目总结
  4. pgsql 修改字段类型为json
  5. Android:shape设置corners(圆角)不能正常显
  6. Elasticsearch就是这么简单
  7. NacosSync多集群迁移
  8. 递归就这么简单
  9. 学了这么久java反射,你知道class.forName
  10. 华为HMS Core音频服务,让有声世界更动听