时间:2021-05-21
对于登录功能本身没有任何特别,使用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中使用这个“全局变量”了:
//设置cookiemyApp appCookie = ((myApp)getApplication()); appCookie.setCookie(cookies);//读取cookiemyApp 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 的管理,有需要的朋友可以参考下。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
做了一个android网络应用,要求用自己实现的webview去访问web网站,并且在远程登录成功之后把cookie写入到手机,保留用作以后的自动登录。找了好多
窃取Cookie会话。大部分Web应用程序使用Cookie来标识用户的身份和登录状态,因此通过窃取Cookie得到用户的隐私信息成为XSS攻击的目标.例如,攻击
1、第一次进入应用,登录获取Cookie,此时如果用到的是AFN去获取接口数据,Cookie已经写入了,所以无需处理,每次请求的时候,会自动将该cookie传给
前言WAF上线之后,处理最多的是误报消除。产生误报有多种原因,比如web应用源码编写时允许客户端提交过多的cookie;比如单个参数提交的数值太大。把误报降低到
cookie和session是web开发新手容易搞混的两个概念,弄清楚两者有助于对web交互更好的理解。个人认为session和cookie的区别主要有如下几点