前段时间项目需要做个接口,接口需要先登录才能进行下一步操作,这里就需要把登录的信息携带下去,进行下一步操作。网上查了很多资料,有很多种方法。下面就介绍较常用

的。

  第一种方式:

    通过获取头信息的方式获取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.

最新文章

  1. select in 在postgresql的效率问题
  2. ILGenerator.Emit动态 MSIL编程(三)之动态代理
  3. 应用EF访问SQLite数据
  4. ios 简单的倒计时验证码数秒过程实现
  5. Java生成动态GIF图片
  6. java 继承类与接口问题
  7. linux 常用命令 集锦
  8. JAVA Calendar具体解释
  9. Unity脚本获取内存和FPS
  10. (原)前端知识杂烩(meta系列)
  11. windows下搭建apache+php+mysql
  12. Android 进程和线程
  13. proxifier配合ss,实现全局代理
  14. ko学习二,绑定语法
  15. webpack安装
  16. Redis的快照持久化-RDB与AOF
  17. php 与mysql 数据库
  18. sony Z5P 刷rec、root的方法
  19. 8-安装Kafka
  20. db2常见命令

热门文章

  1. 用JS改变页面中b标签的样式啊 样式的等
  2. charles之抓包和断点
  3. 1-8继承extends
  4. jmeter(十九)调试工具Debug Sampler
  5. Myisamchk使用
  6. P1554 梦中的统计
  7. android开发学习 ------- json数据与实体类之间的相互转换
  8. Properties没有被注意的地方
  9. 修改他人电脑的Windows登录密码
  10. iOS 从相册中拿到 图片名 ,截取后缀,图片名