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

的。

  第一种方式:

    通过获取头信息的方式获取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的更多相关文章

  1. <<< 网页中如何利用原生js和jquery储存cookie

    javascript当中的cookie机制,使应用达到了真正的全局变量的要求,cookie是浏览器提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由Java ...

  2. js中对cookie的操作及json数据与cookie结合的用法

    cookie的使用 添加cookie 添加cookie:document.cookie = “key=value”; // 一次写入一个键值对 document.cookie = 'test1=hel ...

  3. 【转】js中通过docment.cookie获取到的内容不完整! 在浏览器的application里的cookie里可以看到完整的cookie,个别字段无法通过document.cookie获取。 是否有其他办法可以获取到??

    js中通过docment.cookie获取到的内容不完整!在浏览器的application里的cookie里可以看到完整的cookie,个别字段无法通过document.cookie获取.是否有其他办 ...

  4. {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

    Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...

  5. PHP中Cookie的使用---添加/更新/删除/获取Cookie 及 自动填写该用户的用户名和密码和判断是否第一次登陆

    PHP中Cookie的使用---添加/更新/删除/获取Cookie 及 自动填写该用户的用户名和密码和判断是否第一次登陆  什么是cookie 服务器在客户端保存用户的信息,比如登录名,密码等 这些数 ...

  6. 在pycharm中批量插入表数据、分页原理、cookie和session介绍、django操作cookie

    昨日内容回顾 ajax发送json格式数据 ''' 1. urlencoded 2. form-data 3. json ''' 1. ajax $.ajax({ data: JSON.stringi ...

  7. 转:【WebView的cookie机制 】轻松搞定WebView cookie同步问题

    原文链接:http://blog.csdn.net/fengyuzhengfan/article/details/51517622 在进行APP+H5混合开发的时候,一些功能是用native方法实现的 ...

  8. 管理Cookie的插件——jquery.cookie.js

    下载地址:http://plugins.jquery.com/cookie/ jquery.cookie中的操作: 一.创建cookie: 1.创建一个会话cookie: $.cookie('cook ...

  9. jquery.cookie 使用文档,$.cookie() 文档教程, js 操作 cookie 教程文档。

    jquery.cookie 使用文档,$.cookie() 文档教程, js 操作 cookie 教程文档. jquery.cookie中的操作: jquery.cookie.js是一个基于jquer ...

随机推荐

  1. 跟我一起玩Win32开发(9):绘图(B)

    我们今天继续涂鸦,实践证明,涂鸦是人生一大乐趣. 首先,我们写一个程序骨架子,以便做实验. #include <Windows.h> LRESULT CALLBACK MainWinPro ...

  2. linux高负载下mysql数据库彻底优化

    同时在线访问量继续增大 对于1G内存的服务器明显感觉到吃力严重时甚至每天都会死机 或者时不时的服务器卡一下 这个问题曾经困扰了我半个多月MySQL使用是很具伸缩性的算法,因此你通常能用很少的内存运行或 ...

  3. Aappcloud 调到二级页面黑屏

    PartnerHead3.html 后面多了一个点

  4. Windows API函数大全三

    7. API之位图.图标和光栅运算函数 BitBlt 将一幅位图从一个设备场景复制到另一个 CopyIcon 制作指定图标或鼠标指针的一个副本.这个副本从属于发出调用的应用程序 CopyImage 复 ...

  5. 【转】Java集合:HashMap源码剖析

    Java集合:HashMap源码剖析   一.HashMap概述二.HashMap的数据结构三.HashMap源码分析     1.关键属性     2.构造方法     3.存储数据     4.调 ...

  6. day02 -操作系统及python入门

    操作系统 1.什么是操作系统? 操作系统位于计算机硬件和应用软件之间. 是一个协调.控制.管理计算机硬件资源和软件资源的控制程序. 2.为何要有操作系统? ①·控制硬件 ②·把对硬件的复杂的操作封装成 ...

  7. Android 常见的工具类

    /** * Wifi 管理类 * * @author Administrator * 使用方法 * WifiManagerUtils wifiManager = new WifiManagerUtil ...

  8. VCS filelist 文件格式

    VCS在运行仿真一般都会加仿真参数 –f filelist,filelist 是包含其他的仿真参数和整个工程的文件列表.具体格式如下: //file list format, just for exa ...

  9. mac下iterm2配置安装,通过expact实现保存账号,及通过跳板登陆配置

    在参考了几款mac不错的ssh工具外,最终选择使用iterm2.本来打算用FinalShell,安装后发现其icon在访达中根本不现实,而且每次访问还需要输入管理员账号密码,强迫症根本受不了... 官 ...

  10. C# 移动开发(Xamarin.Form) Plugin.BLE 蓝牙连接

    随着Xamarin.Form项目接近尾声,仔细一算才发现过来大半年时间了. 期间除了刚开始有闲情写写,现在总算有空来总结一下了. 来先说 Plugin.BLE (https://github.com/ ...