Http中cookie的使用以及用CookieManager管理cookie
2024-08-27 10:02:08
前段时间项目需要做个接口,接口需要先登录才能进行下一步操作,这里就需要把登录的信息携带下去,进行下一步操作。网上查了很多资料,有很多种方法。下面就介绍较常用
的。
第一种方式:
通过获取头信息的方式获取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.
最新文章
- select in 在postgresql的效率问题
- ILGenerator.Emit动态 MSIL编程(三)之动态代理
- 应用EF访问SQLite数据
- ios 简单的倒计时验证码数秒过程实现
- Java生成动态GIF图片
- java 继承类与接口问题
- linux 常用命令 集锦
- JAVA Calendar具体解释
- Unity脚本获取内存和FPS
- (原)前端知识杂烩(meta系列)
- windows下搭建apache+php+mysql
- Android 进程和线程
- proxifier配合ss,实现全局代理
- ko学习二,绑定语法
- webpack安装
- Redis的快照持久化-RDB与AOF
- php 与mysql 数据库
- sony Z5P 刷rec、root的方法
- 8-安装Kafka
- db2常见命令