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月前
|
存储 缓存 Android开发
安卓Jetpack Compose+Kotlin, 使用ExoPlayer播放多个【远程url】音频,搭配Okhttp库进行下载和缓存,播放完随机播放下一首
这是一个Kotlin项目,使用Jetpack Compose和ExoPlayer框架开发Android应用,功能是播放远程URL音频列表。应用会检查本地缓存,如果文件存在且大小与远程文件一致则使用缓存,否则下载文件并播放。播放完成后或遇到异常,会随机播放下一首音频,并在播放前随机设置播放速度(0.9到1.2倍速)。代码包括ViewModel,负责音频管理和播放逻辑,以及UI层,包含播放和停止按钮。
|
API Android开发 数据安全/隐私保护
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
1103 0
|
1月前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
7月前
|
JSON Android开发 数据格式
android与Web服务器交互时的cookie使用-兼谈大众点评数据获得(原创)
android与Web服务器交互时的cookie使用-兼谈大众点评数据获得(原创)
93 2
|
4月前
|
XML Android开发 UED
"掌握安卓开发新境界:深度解析AndroidManifest.xml中的Intent-filter配置,让你的App轻松响应scheme_url,开启无限交互可能!"
【8月更文挑战第2天】在安卓开发中,scheme_url 通过在`AndroidManifest.xml`中配置`Intent-filter`,使应用能响应特定URL启动或执行操作。基本配置下,应用可通过定义特定URL模式的`Intent-filter`响应相应链接。
125 12
|
4月前
|
Shell Android开发
安卓scheme_url调端:在AndroidManifest.xml 中如何配置 Intent-filter?
为了使Android应用响应vivo和oppo浏览器的Deep Link或自定义scheme调用,需在`AndroidManifest.xml`中配置`intent-filter`。定义启动的Activity及其支持的scheme和host,并确保Activity可由外部应用启动。示例展示了如何配置HTTP/HTTPS及自定义scheme,以及如何通过浏览器和adb命令进行测试,确保配置正确无误。
|
4月前
|
Java Android开发 UED
安卓scheme_url调端:如果手机上多个app都注册了 http或者https 的 intent。 调端的时候,调起哪个app呢?
当多个Android应用注册了相同的URL Scheme(如http或https)时,系统会在尝试打开这类链接时展示一个选择对话框,让用户挑选偏好应用。若用户选择“始终”使用某个应用,则后续相同链接将直接由该应用处理,无需再次选择。本文以App A与App B为例,展示了如何在`AndroidManifest.xml`中配置对http与https的支持,并提供了从其他应用发起调用的示例代码。此外,还讨论了如何在系统设置中管理这些默认应用选择,以及建议开发者为避免冲突应注册更独特的Scheme。
|
7月前
|
JSON 前端开发 Java
什么是请求参数、表单参数、url参数、header参数、Cookie参数?一文讲懂
什么是请求参数、表单参数、url参数、header参数、Cookie参数?一文讲懂
181 0
|
定位技术 Android开发
[√]Android webview的url scheme
[√]Android webview的url scheme
556 0
|
XML 缓存 IDE
Android网络 | URL和URLConnection详解及其实战案例
Android网络 | URL和URLConnection详解及其实战案例