前些天因为项目需要写了一个通过网络连接去服务端拿数据的方法,但是需要让程序添加上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传递过去。

    流程如下:

    、客户端通过以下代码设置cookie

public static void synCookies(Context context, String url) {
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setCookie(url, "uid=1243432");
CookieSyncManager.getInstance().sync();
} 、CookieManager会将这个Cookie存入该应用程序/data/data/databases/目录下的webviewCookiesChromium.db数据库的cookies表中 、打开网页,WebView从数据库中读取该cookie值,放到http请求的头部,传递到服务器 、客户端可以在注销登录时清除该应用程序用到的所有cookies private void removeCookie(Context context) {
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
CookieSyncManager.getInstance().sync();
}

android 给url添加cookie的更多相关文章

  1. Android 添加cookie

    /** * 添加cookie * * @param url */ private void setCookie(String url) { // 获取uid String uid = UserData ...

  2. selenium3.7+ python3 添加cookie模拟登陆

    一.背景介绍 最近做一个爬虫项目,用selenium调用浏览器去获取渲染后的源码,但是每次登陆都需要手机验证,这真的是头痛啊,这种验证方式不要想着去破解,还是老老实实用手机收验证码去吧!反正我是不知道 ...

  3. selenium webdriver 如何添加cookie

    一. webdriver中常用的cookie方法 webdriver中提供了操作cookie的相关方法: get_cookies()                  获得cookie信息 add_c ...

  4. 接口测试:添加cookie以及身份验证

    添加cookie以及身份验证的接口文档: cookie:存放在本地的一个键值对 session:存放在服务端的一个键值对 学生金币充值接口文档: 一.使用postman进行测试 由于进行学生金币充值操 ...

  5. selenium webdriver如何添加cookie

    一. webdriver中常用的cookie方法 webdriver中提供了操作cookie的相关方法: get_cookies()                  获得cookie信息 add_c ...

  6. httpclient使用head添加cookie

    最近在使用接口时候,我使用get请求时,需要携带登录态,所以在get请求的时候我需要在head里面把cookie给加上,添加方式get和post完全不一样 Post方式添加cookie httpPos ...

  7. python中http请求中添加cookie支持

    python3中构造http的Request需要用到urllib.request. 有时会用到cookie. 比如在访问网站首页得到cookie,通过下面代码添加cookie:      #insta ...

  8. iOS/Android/Web Url Encode空格處理 原文連結:http://read01.com/3gDO.html

    iOS/Android/Web Url Encode空格處理 原文連結:http://read01.com/3gDO.html 前言 這裡只是講一個故事,一個發生在我身上的真實的故事.曾經,我以為搞加 ...

  9. HTTP 请求方式: GET和POST的比较当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。

    什么是HTTP? 超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议. HTTP在客户端和服务器之间以request ...

随机推荐

  1. [XJOI]noip44 T3还有这种操作

    还有这种操作 ttt 最近在学习二进制, 他想知道小于等于N的数中有多少个数的二进制表示中有偶数个1. 但是他想了想觉得不够dark,于是他增加了若干次操作,每次操作会将一个区间内的0变1 , 1变0 ...

  2. ridis 集群配置

    ./redis-cli -h 192.168.106.128 -p  6379 redis 1.ping 2.set str1 abc    get str1 3.  mkdir ../redis-c ...

  3. CSS 三栏布局入门

    首先,我是CSS盲[只听说过box model],没动手实践过,关于margin padding只知名称,不明细节.刚看过一叶斋大哥关于css布局的博文,再动手实践,动手记录下点滴积累以备后用. &l ...

  4. python3爬虫:下载网易云音乐排行榜

    #!/usr/bin/python3# -*- encoding:utf-8 -*- # 网易云音乐批量下载 import requestsimport urllib # 榜单歌曲批量下载# r = ...

  5. OnLineML:时序数据挖掘

    关于时序分析: 我们跟随时间的脚步,试图解释现在.理解过去.甚至预测未来........ 原文链接:http://blog.sciencenet.cn/home.php?mod=space&u ...

  6. Jmeter报内存溢出解决方案

    描述:wimdows环境,做上传图片接口测试,涉及图片合成和上传,图片采用base64编码.每1s启动200线程的时候,Jmeter报内存溢出错误. 解决方案: 1.修改jmeter.bat: set ...

  7. gulp给文件后添加md5时间戳

    这里为总的方法,实际项目中拷贝出来的,底下有详细的总结以及只针对添加时间戳的方法 1 // 引入 gulp及组件 var gulp = require('gulp'), autoprefixer = ...

  8. pycharm一些快捷键

    1.鼠标方法在内建函数上,Ctrl+B,看内建函数的定义 2.pycharm单行和多行注释快捷键   单多行注释就一个组合键:选中+Ctrl+/ 3.Python代码块批量添加Tab缩进    按Ta ...

  9. bootstrapvalidator使用,重置校验

    1.html页面需要注意的是验证字段需要用form-group包裹.需要引用相应的css和js. <form id="jobForm" role="form&quo ...

  10. with as递归调用

    一.递归调用--在代码中偶尔看到以记之,便于下次学习 https://blog.csdn.net/johnf_nash/article/details/78681060 --查询节点及其下所有子节点 ...