android 给url添加cookie

简介:
复制代码
 前些天因为项目需要写了一个通过网络连接去服务端拿数据的方法,但是需要让程序添加上cookie,因为之前对cookie 没有怎么研究过(包括做web 那会也没有用过或者说很少用),所以 

一时用起来不太会用。。结果百度google 了一把 发现要用cookieManager这个类,然后对这个类进行操作就行了!

Java代码  收藏代码

    String getCookie(Context context){  
    CookieManager cookieManager = CookieManager.getInstance();  
    String        cookie = cookieManager.getCookie("cookie");  
    if(cookie != null){  
        return cookie;  
    }else{  
    cookie= “XXX”;  
    cookieManager.setCookie("cookie", cookie);  
    return cookie;  
    }  
    }  



可以看到 我们只要设置在这里面然后再使用的时候我们在自己的httpconnection中添加就行了 

Java代码  收藏代码

    URL  url = new URL(urlPath);  
    HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();  
    httpUrlConn.setRequestProperty("cookie", getCookie(context));  



这样做 貌似是正确的。。当时我也是这么理解的。。但是很不幸的 是 。。。报错了。。 

提示createInstance() must be instance called before getinstance() 

很明显 我们必须要首先产生这个实例。。。结果查了一下API 需要在 getInstance()之前先 
Java代码  收藏代码

    CookieSyncManager.createInstance(context);  



这样之后就不会出错了。。createInstance 之后保证了我们的。。webkit在使用CookieManager的时候 使用的是同一个CookieManager并保证了 线程同步。。。。 

这一点我们可以参看CookieSyncManager.createInstance(context);的源码。。。。。 
复制代码

 

复制代码
 在Android应用程序中经常会加载一个WebView页,如果需要客户端向WebView传递信息,比如Cookie,也是可以的。

需要应用程序先将Cookie注入进去,打开该网页时,WebView会将加载的url通过http请求传输到服务器。同时,在这次请求中,会将Cookie信息通过http header传递过去。

    流程如下:

    1、客户端通过以下代码设置cookie
1
2
3
4
5
6
    
public static void synCookies(Context context, String url) {  
        CookieSyncManager.createInstance(context);  
        CookieManager cookieManager = CookieManager.getInstance();  
        cookieManager.setCookie(url, "uid=1243432");              
        CookieSyncManager.getInstance().sync();  
    }

   2、CookieManager会将这个Cookie存入该应用程序/data/data/databases/目录下的webviewCookiesChromium.db数据库的cookies表中

   3、打开网页,WebView从数据库中读取该cookie值,放到http请求的头部,传递到服务器

   4、客户端可以在注销登录时清除该应用程序用到的所有cookies
1
2
3
4
5
6
    
private void removeCookie(Context context) {
        CookieSyncManager.createInstance(context);  
        CookieManager cookieManager = CookieManager.getInstance(); 
        cookieManager.removeAllCookie();
        CookieSyncManager.getInstance().sync();  
    }
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5478074.html,如需转载请自行联系原作者

相关文章
|
6月前
|
API Android开发 数据安全/隐私保护
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
229 0
|
5月前
|
定位技术 Android开发
[√]Android webview的url scheme
[√]Android webview的url scheme
407 0
|
XML 缓存 IDE
Android网络 | URL和URLConnection详解及其实战案例
Android网络 | URL和URLConnection详解及其实战案例
|
Android开发
Android 通过图片url获取图片的宽高
Android 通过图片url获取图片的宽高
321 0
|
Android开发
Android WebView设置Cookie
Android WebView设置Cookie
323 0
|
Android开发
Android WebView获取cookie
Android WebView获取cookie
330 0
|
Java 测试技术 Android开发
App一键切换url环境、一键打包__Android (Java)
App一键切换url环境、一键打包__Android (Java)
503 0
App一键切换url环境、一键打包__Android (Java)
|
缓存 前端开发 JavaScript
Android 拦截WebView加载URL,控制其加载CSS、JS资源
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/49517537 绪论 最近在项目中有了这样一个需求,我们都知道WebView加载网页可以缓存,但是web端想让客服端根据需求来缓存网页,也就是说web端在设置了http响应头,我根据这个头来拦截WebView加载网页,去执行网络加载还是本地缓存加载。
1113 0
|
Android开发
Android笔记:根据图片url获取bitmap或者drawable,然后再进行压缩处理
Android笔记:根据图片url获取bitmap或者drawable,然后再进行压缩处理
437 0
|
移动开发 网络安全 API
Android-X5WebView(Cookie管理、进度监听、适配8.1系统等策略)
本文已独家授权 郭霖 ( guolin_blog ) 公众号发布! 撸完了上一篇Android-X5WebView简介 之后,有些大兄弟可能觉得不过瘾呐,说你那样的都是很基础的啊(的确很基础),项目里面用起来不爽啊(的确很不爽),不能让我直接CV啊(的确不能直接复制粘贴)等等,那这篇文章的目标就是怎么样快速封装X5WebView,如何有效的同步以及管理Cookie,如何使用IntentService优化预加载,如何监听进度条以及8.1系统的踩坑适配,等一些在项目中的常用功能。
2273 0