zoukankan      html  css  js  c++  java
  • Http中cookie的使用以及用CookieManager管理cookie

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

    的。

      第一种方式:

        通过获取头信息的方式获取cookie,HttpURLConnection的getHeaderFields()方法:

    1  HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
    2  ...
    3   // 这里定义为Map<String,List<String>>类型,是因为getHeaderFields()方法获取的就是这种类型,可以通过postman软件查看返回的cookie类型。
    4  Map<String,List<String>> cookies = httpURLConnection .getHeaderFields();
    5  
    6  List<String> setCookies = cookies.get("Set-Cookie");
    7   ...

        当需要将cookie传递下去时:

    1 // 当需要使用cookie是将其传递出去(传递的是你需要的信息)
    2  String cookie = "JSESSIONID=xxx"  //  看个人需要获取cookie(cookie中包含的信息可能很多)
    3 
    4 // 这里是用HttpURLConnection 的setRequestProperty()方法将cookie放到请求的header中
    5 
    6  httpURLConnection.setRequestProperty("Cookie", cookie);

      第二种方法:

        使用CookieManager来获取管理cookie。

     1 // 使用CookieManager来管理cookie。
     2 
     3 public class CookieTest {
     4 
     5   // 登录的操作,传入用户名和密码
     6   public static List<HttpCookie> login(String j_username, String j_password){
     7     // 创建一个 CookieManager对象
     8     CookieManager manager = new CookieManager();
     9     // 接受所有的Cookie
    10     manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
    11     // 保存这个定制的CookieManager
    12     CookieHandler.setDefault(manager);
    13 
    14     CookieStore cookieJar = manager.getCookieStore();
    15     // 用List获取cookie,因为cookie中可能包含多个信息
    16     List<HttpCookie> cookies = cookieJar.getCookies();
    17    /**
    18      *其他的操作省略
    19      */
    20     // 这里我们就获取到了cookie,将其返回。
    21     return cookies;
    22   }
    23   // 测试携带cookie的方法
    24   public void testcookie(List<HttpCookie> cookies) {
    25     // 可以设置你要访问的路径
    26     URL url = new URL("https:......");
    27     /**
    28      * 省略其他操作
    29      */
    30     // 创建默认的CookieManager
    31       CookieManager manager = new CookieManager();
    32       // 保存这个定制的CookieManager
    33       CookieHandler.setDefault(manager);
    34 
    35       CookieStore cookieJar = manager.getCookieStore();
    36       for (HttpCookie cookie : cookies) {
    37           cookieJar.add(url.toURI(), cookie);
    38       }
    39   }
    40 
    41   public static void main(String[] args){
    42     CookieTest  test = new CookieTest ();
    43     // 当我们要携带cookie进行下一步操作的时候,先接受登录操作返回的cookies
    44     List<HttpCookie> cookies = test.login("admin", "admin");
    45     // 进行下一步操作时将cookies携带着
    46     test.testcookie(cookies);
    47     ...
    48   }
    49 }

    我目前只尝试过这两种方式,如以后在发现会加上来的。

    文中的内容参考了官方文档:https://docs.oracle.com/javase/tutorial/deployment/doingMoreWithRIA/accessingCookies.html

    若有问题可以和我交流,714759889@qq.com.

  • 相关阅读:
    Saltstack module apache 详解
    Saltstack module ip 详解
    Saltstack module iosconfig 详解
    Saltstack module introspect 详解
    Saltstack module inspector 详解
    Saltstack module ini 详解
    Saltstack module incron 详解
    Modbus 指令 RS485指令规则
    停车系统对接第三方在线支付平台(二)
    停车系统对接第三方在线支付平台
  • 原文地址:https://www.cnblogs.com/jylee/p/9417911.html
Copyright © 2011-2022 走看看