Http中cookie的使用以及用CookieManager管理cookie
前段时间项目需要做个接口,接口需要先登录才能进行下一步操作,这里就需要把登录的信息携带下去,进行下一步操作。网上查了很多资料,有很多种方法。下面就介绍较常用
的。
第一种方式:
通过获取头信息的方式获取cookie,HttpURLConnection的getHeaderFields()方法:
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
...
// 这里定义为Map<String,List<String>>类型,是因为getHeaderFields()方法获取的就是这种类型,可以通过postman软件查看返回的cookie类型。
Map<String,List<String>> cookies = httpURLConnection .getHeaderFields();
List<String> setCookies = cookies.get("Set-Cookie");
...
当需要将cookie传递下去时:
// 当需要使用cookie是将其传递出去(传递的是你需要的信息)
String cookie = "JSESSIONID=xxx" // 看个人需要获取cookie(cookie中包含的信息可能很多) // 这里是用HttpURLConnection 的setRequestProperty()方法将cookie放到请求的header中 httpURLConnection.setRequestProperty("Cookie", cookie);
第二种方法:
使用CookieManager来获取管理cookie。
// 使用CookieManager来管理cookie。
public class CookieTest {
// 登录的操作,传入用户名和密码
public static List<HttpCookie> login(String j_username, String j_password){
// 创建一个 CookieManager对象
CookieManager manager = new CookieManager();
// 接受所有的Cookie
10 manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
// 保存这个定制的CookieManager
12 CookieHandler.setDefault(manager);
CookieStore cookieJar = manager.getCookieStore();
// 用List获取cookie,因为cookie中可能包含多个信息
List<HttpCookie> cookies = cookieJar.getCookies();
17 /**
*其他的操作省略
*/
// 这里我们就获取到了cookie,将其返回。
return cookies;
}
// 测试携带cookie的方法
public void testcookie(List<HttpCookie> cookies) {
// 可以设置你要访问的路径
URL url = new URL("https:......");
/**
* 省略其他操作
*/
// 创建默认的CookieManager
CookieManager manager = new CookieManager();
// 保存这个定制的CookieManager
CookieHandler.setDefault(manager);
CookieStore cookieJar = manager.getCookieStore();
for (HttpCookie cookie : cookies) {
cookieJar.add(url.toURI(), cookie);
}
}
41 public static void main(String[] args){
CookieTest test = new CookieTest ();
// 当我们要携带cookie进行下一步操作的时候,先接受登录操作返回的cookies
List<HttpCookie> cookies = test.login("admin", "admin");
// 进行下一步操作时将cookies携带着
test.testcookie(cookies);
...
}
}
我目前只尝试过这两种方式,如以后在发现会加上来的。
文中的内容参考了官方文档:https://docs.oracle.com/javase/tutorial/deployment/doingMoreWithRIA/accessingCookies.html
若有问题可以和我交流,714759889@qq.com.
Http中cookie的使用以及用CookieManager管理cookie的更多相关文章
- <<< 网页中如何利用原生js和jquery储存cookie
javascript当中的cookie机制,使应用达到了真正的全局变量的要求,cookie是浏览器提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由Java ...
- js中对cookie的操作及json数据与cookie结合的用法
cookie的使用 添加cookie 添加cookie:document.cookie = “key=value”; // 一次写入一个键值对 document.cookie = 'test1=hel ...
- 【转】js中通过docment.cookie获取到的内容不完整! 在浏览器的application里的cookie里可以看到完整的cookie,个别字段无法通过document.cookie获取。 是否有其他办法可以获取到??
js中通过docment.cookie获取到的内容不完整!在浏览器的application里的cookie里可以看到完整的cookie,个别字段无法通过document.cookie获取.是否有其他办 ...
- {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...
- PHP中Cookie的使用---添加/更新/删除/获取Cookie 及 自动填写该用户的用户名和密码和判断是否第一次登陆
PHP中Cookie的使用---添加/更新/删除/获取Cookie 及 自动填写该用户的用户名和密码和判断是否第一次登陆 什么是cookie 服务器在客户端保存用户的信息,比如登录名,密码等 这些数 ...
- 在pycharm中批量插入表数据、分页原理、cookie和session介绍、django操作cookie
昨日内容回顾 ajax发送json格式数据 ''' 1. urlencoded 2. form-data 3. json ''' 1. ajax $.ajax({ data: JSON.stringi ...
- 转:【WebView的cookie机制 】轻松搞定WebView cookie同步问题
原文链接:http://blog.csdn.net/fengyuzhengfan/article/details/51517622 在进行APP+H5混合开发的时候,一些功能是用native方法实现的 ...
- 管理Cookie的插件——jquery.cookie.js
下载地址:http://plugins.jquery.com/cookie/ jquery.cookie中的操作: 一.创建cookie: 1.创建一个会话cookie: $.cookie('cook ...
- jquery.cookie 使用文档,$.cookie() 文档教程, js 操作 cookie 教程文档。
jquery.cookie 使用文档,$.cookie() 文档教程, js 操作 cookie 教程文档. jquery.cookie中的操作: jquery.cookie.js是一个基于jquer ...
随机推荐
- 关于 typedef struct 和 struct
举个例子说明:typedef struct abc{ int x; int y; int z;}ABC;是将结构体abc类型重新起个名字为ABC,以后再定义同一类型的变量时,可以写成:ABC m,n; ...
- [BJOI2017]魔法咒语
Description Chandra 是一个魔法天才. 从一岁时接受火之教会洗礼之后, Chandra 就显示出对火元素无与伦比的亲和力,轻而易举地学会种种晦涩难解的法术.这也多亏 Chandra ...
- DP HDOJ 5492 Find a path
题目传送门 题意:从(1, 1)走到(n, m),每次往右或往下走,问(N+M−1)∑(Ai−Aavg)2 的最小值 分析:展开式子得到(N+M−1)∑(Ai2) - (∑(Ai))2的最小值.用普通 ...
- rhel6.5--http练习
包名 简介 httpd-2.2.15-29.el6_4.x86_64.rpm http服务的主程序包 httpd-devel-2.2.15-29.el6_4.x86_64.rpm ap ...
- 【转】Iconfont
Iconfont Iconfont 是指用字体文件取代图片文件,来展示图标.特殊字体等元素的一种方法.很多网站都会用它,比如手淘.新浪微博等. 在使用它之前,先来了解一下它的优缺点: 优点:(1)文件 ...
- poj3262 Protecting the Flowers
思路: 简单贪心,每次选择性价比最高的. 实现: #include <iostream> #include <cstdio> #include <algorithm> ...
- Android Activity生命周期的几个问题
每一个Android开发者都应该知道,android系统有四个重要的基本组件,即Activity(活动).Service(服务).Broadcast Receive(广播接收器)和Content ...
- iOS 二维码的生成 QREncoder
生成二维码: 在生成二维码的库中QREncoder最为常见,但是由于中文字符的特殊性,生成中文的时候有时会出现一定的错误,所以建议使用libqrencode,是一个纯C编写的类库. 以libqrenc ...
- MyBatis学习(四)
前言 最近比较松懈,下班回家后也懒得学习了.今晚实在是看不下去了,争取时间学习.社会上有这么多的资源,就看谁能抢的多吧.今天就说说MyBatis的动态SQL吧 正文 动态 SQL 通常要做的事情是有条 ...
- Java编译时根据调用该方法的类或对象所属的类决定
class Base{ int x = 1; static int y = 2; } class Subclass extends Base{ int x = 4; i ...