Android 登录Web 时对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 的管理,有需要的朋友可以参考下。

时间: 2024-10-05 11:13:50

Android 登录Web 时对cookie 处理的相关文章

Android 登录Web 时对cookie 处理_Android

对于登录功能本身没有任何特别,使用httpclient向服务器post用户名密码即可. 但是为了保持登录的状态(在各个Activity之间切换时要让网站知道用户一直是处于登录的状态)就需要进行cookie的读写. httpclient相当强大,读写cookie非常容易: CookieStore cookies=((AbstractHttpClient)client).getCookieStore();//读cookie ((AbstractHttpClient) client).setCooki

登录WEB时提示Mysql数据库无法连接!

    背景:某WEB工程,使用Mysql5.4作为数据库,Tomcat6作为WEB容器(我真不知道为什么要用6,是我我就用7.052....),利用Java某框架(对这方面不熟,分不清Spring和Hibernate)来维护连接池,使用jdbc.     现象:登录WEB的时候报错,大致如下             com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully rece

PHP读取CURL模拟登录时生成Cookie文件的方法_php技巧

本文实例讲述了PHP读取CURL模拟登录时生成Cookie文件的方法.分享给大家供大家参考.具体实现方法如下: 在使用PHP中的CURL模拟登录时会保存一个Cookie文件,例如下面的代码 复制代码 代码如下: $login_url = 'XXX';    $post_fields['email'] = 'XXXX';  $post_fields['password'] = 'XXXX';  $post_fields['origURL'] = 'XXX';  $post_fields['doma

web 登录界面 登录失败时给予提示

问题描述 web 登录界面 登录失败时给予提示 红色位置打出"账号或密码错误"要用到什么才能实现?我之前用url传参数可以 但是 感觉不太好 希望大神来帮我指点一下 谢谢 解决方案 用AJAX,登录失败后返回错误提示,然后把返回值显示在你想显示的区域. 解决方案二: 红色那块放一个span容器,然后js设置span的innerHTML显示错误信息 <span id=""spErr"" style=""color:red&

android开发中webview保存cookie问题的解决

最近老是发现在IE里会有Cookie的问题,如IE下面无法登出,或无法登录,或者登录后信息却无法取到,而Firefox下面一直是通过的,都试过好多次了,今天终于找回的主要的原因: Cookie的问题: 首先看一下我的Cookie存取代码 (这个Cookie操作支持二级域名访问) #region 存取Cookie /// 〈summary〉 /// 存Cookie /// Json Lee 2007-09-24 /// 〈/summary〉 /// 〈param name="strName&quo

用户权限-用户登录系统时其权限可以用SESSION去验证吗??

问题描述 用户登录系统时其权限可以用SESSION去验证吗?? 最近尝试用java web做一个教师评价系统,需要多角色进行评论和查询,但其内容因角色而定,我上网查了下,貌似还要在数据库中建表,问题如下: 1.怎么才能让用户角色与其权限(是这个用户应该看到的页面)进行连接呢?? 2.可以用SESSION 吗?如果可以,能给我个例子吗,能看懂流程就行. 3.各位有什么好办法解决这样的问题?? 我是初入门,知道不懂的地方很多,希望大家能帮助一下,欢迎大家直言相告... 解决方案 用session保存

android app开发时WEBSERVICE一般用什么技术?

问题描述 android app开发时WEBSERVICE一般用什么技术? 最近试着写一个ANDROID的APP,比较短的时间内把客户端的内容过了一遍,现在 需要跟后台进行数据交互,数据库部分已经搞定.以前没有写过WEBSERVICE,想大 致了解一下需要用到什么技术,和简单的技术流程. 功能很简单,要求客户端提交简单的数据,WEBSERVICE完成接收数据,并操作服务器 端MYSQL数据库的功能,并返回从库中取出的值.应该如何开发WEB SERVICE? 解决方案 webserive你直接用j

c#模拟hTTP登录成功 获取到cookie信息后 如何写入浏览器

问题描述 c#模拟hTTP登录成功获取到cookie信息后如何写入浏览器保持登录状态就是我的应用程序已经通过http请求模拟登陆成功并保存了cookie,现在想调用IE打开一个web界面,而不需要重新登陆,不知道这些cookie能否传给IE. 解决方案 解决方案二:传个key过去登录解决方案三:1.查看你的工具,如何在你的浏览器查找dom.插入一个dom.插入一个<scripttype=text/javascript>,以及如何运行一个js函数.2.不支持初学者钻研这类程序.最好还是学点正规的

android集成webim时,如何接收图片(音频)消息中的路径?

问题描述 将webim集成在android手机上时,发送文本消息没有问题,当接收图片(音频)消息的时候,无法获取该文件的路径 发送amr音频文件时,response.type值为  audio/mpeg   Object.prototype.toString.call(response).indexOf('Blob')值为  8 解决方案 webim发送文件,要先调用rest接口上传,下载解决方案二:我上面写错了......在接收amr文件时,android无法成功获取消息中amr文件的路径,错