Android Cookie共享到WebView避免再次登录(保持登录状态)
最近在做项目时用到了webview打开指定链接的网页,可已经把webview设置了cookie但始终跳转到登录页面,这明显是cookie没有设置成功导致webview没有将设置好的cookie发送出去……
1
2
3
4
5
|
CookieSyncManager.createInstance(context); CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie( true ); cookieManager.setCookie(url, cookies); //cookies是在HttpClient中获得的cookie CookieSyncManager.getInstance().sync(); |
通过上述代码即可把事先保存下来的cookie和指定的url关联起来,达到保持登录的状态,避免重复登录。遗憾的是,笔者在开发过程当中严格按照上述设置cookie的代码来进行cookie的设置,可结果还是失败,始终跳转到登录页提示登录。后来返回去查看了下Android API文档,发现setCookie函数的两个参数值说明如下:
public void setCookie(String url, String value)
Sets a cookie for the given URL. Any existing cookie with the same host, path and name will be replaced with the new cookie. The cookie being set must not have expired and must not be a session cookie, otherwise it will be ignored.
url | the URL for which the cookie is set |
---|---|
value | the cookie as a string, using the format of the 'Set-Cookie' HTTP response header value参数的作用是cookie值的字符串形式,但格式一定要是http请求头格式"Set-Cookie"。 |
原文链接:http://www.cnblogs.com/hdtianfu/archive/2013/05/30/3108295.html
Cookie相关的Http头
一个URL中包含有domain和path,可以参考http://www.w3school.com.cn/html/html_url.asp
在程序中生成expires
上述红色加粗的文字更让我确信了我的判断,此时此刻的心情有多么激动就不用说了,嘿嘿
于是,我在原来设置的cookie字符串上加上了domain和path字段,怀着期盼的心情run了下,哈哈,结果正确了,再也不用反复登录了。
经过此次的bug解决,在编程中不能放过任何一个细节,要对每个运行细节都清清楚楚这样才能避免盲目的去解决问题,最终浪费时间……
欢迎加入讨论群讨论:192209234