CookieStore 是 Java API 中用来处理 HTTP 客户端的 Cookie 存储策略的类。psd素材

1. [代码]WebClient.java     
01import java.io.BufferedReader;
02import java.io.InputStream;
03import java.io.InputStreamReader;
04import java.net.CookieHandler;
05import java.net.CookieManager;
06import java.net.CookiePolicy;
07import java.net.CookieStore;
08import java.net.HttpCookie;
09import java.net.URI;
10import java.net.URL;
11import java.net.URLConnection;
12import java.util.ArrayList;
13import java.util.Collection;
14import java.util.HashMap;
15import java.util.List;
16import java.util.Map;
17import java.util.Set;
18 
19 
20public class WebClient {
21  public static void main(String[] args) throws Exception {
22    CookieStore store = new MyCookieStore();
23    CookiePolicy policy = new MyCookiePolicy();
24    CookieManager handler = new CookieManager(store, policy);
25    CookieHandler.setDefault(handler);
26    URL url = new URL("http://localhost:8080/cookieTest.jsp");
27    URLConnection conn = url.openConnection();
28 
29    InputStream in = conn.getInputStream();
30    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
31    String input;
32    while ((input = reader.readLine()) != null) {
33      System.out.println(input);
34    }
35    reader.close();
36 
37  }
38}
39 
40class MyCookiePolicy implements CookiePolicy {
41  public boolean shouldAccept(URI uri, HttpCookie cookie) {
42//    String host = uri.getHost();
43  //  return host.equals("localhost");
44    return true;
45  }
46}
47 
48class MyCookieStore implements CookieStore {
49  private Map<URI, List<HttpCookie>> map = new HashMap<URI, List<HttpCookie>>();
50 
51  public void add(URI uri, HttpCookie cookie) {
52    List<HttpCookie> cookies = map.get(uri);
53    if (cookies == null) {
54      cookies = new ArrayList<HttpCookie>();
55      map.put(uri, cookies);
56    }
57    cookies.add(cookie);
58  }
59 
60  public List<HttpCookie> get(URI uri) {
61    List<HttpCookie> cookies = map.get(uri);
62    if (cookies == null) {
63      cookies = new ArrayList<HttpCookie>();
64      map.put(uri, cookies);
65    }http://www.huiyi8.com/jiaoben/
66    return cookies;
67  }
68 
69  public List<HttpCookie> getCookies() {
70    Collection<List<HttpCookie>> values = map.values();
71    List<HttpCookie> result = new ArrayList<HttpCookie>();
72    for (List<HttpCookie> value : values) {
73      result.addAll(value);
74    }
75    return result;
76  }
77 
78  public List<URI> getURIs() {
79    Set<URI> keys = map.keySet();
80    return new ArrayList<URI>(keys);
81 
82  }
83 
84  public boolean remove(URI uri, HttpCookie cookie) {
85    List<HttpCookie> cookies = map.get(uri);
86    if (cookies == null) {
87      return false;
88    }
89    return cookies.remove(cookie);
90  }
91 
92  public boolean removeAll() {
93    map.clear();
94    return true;
95  }
96}

【Java】CookieStore 类使用示例的更多相关文章

  1. 关于Java Logger类的使用问题 - 内存不释放

    原文地址:http://www.ihuxu.com/p/236.html   说明:这是一个利用Java Logger类的示例,完成简单的日志记录功能.代码中有部分类库没有说明,但不影响阅读. 本人技 ...

  2. JAVA String 类

    java String类中的常用方法:public char charAt(int index)返回字符串中第index个字符:public int length()返回字符串的长度:public i ...

  3. java 文件类操作(转载)

    11.3 I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程 ...

  4. 【47】java的类之间的关系:泛化、依赖、关联、实现、聚合、组合

    java的类之间的关系:泛化.依赖.关联.实现.聚合.组合 泛化: • 泛化关系(Generalization)也就是继承关系,也称为"is-a-kind-of"关系,泛化关系用于 ...

  5. 从字节码和JVM的角度解析Java核心类String的不可变特性

    1. 前言 最近看到几个有趣的关于Java核心类String的问题. String类是如何实现其不可变的特性的,设计成不可变的好处在哪里. 为什么不推荐使用+号的方式去形成新的字符串,推荐使用Stri ...

  6. java pojo类

    POJO POJO是Plain OrdinaryJava Object的缩写 可以当作简单的Java对象 实际就是普通JavaBeans 外文名 POJO 实际意义 普通JavaBeans 全     ...

  7. spring 配置 Java配置类装配bean

    https://www.cnblogs.com/chenbenbuyi/p/8457700.html 自动化装配的确有很大的便利性,但是却并不能适用在所有的应用场景,比如需要装配的组件类不是由自己的应 ...

  8. JAVA代理方式使用示例总结

    JAVA代理方式使用示例总结 一.    代理方式概括 Java的代理方式主要包含了静态代理,动态代理两种方式,其中,动态代理根据实现的方式不同,又可以划分为jdk动态代理和cglib动态代理. 二. ...

  9. java Random类详解

    java Random类位于java.util包下,主要用来生成随机数,本文详解介绍了Random类的用法,希望能帮到大家 Random类 (java.util) Random类中实现的随机算法是伪随 ...

随机推荐

  1. Vue 中computed 与 methods 区别

    1.示例 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF- ...

  2. ExtJS4 自己主动生成控制grid的列显示、隐藏的checkbox

    因为某种原因.须要做一个控制grid列显示的checkboxgroup,尽管EXTJS4中的gridpanel自带列表能够来控制列的显示隐藏,可是有这种需求(须要一目了然) 以下先上图 waterma ...

  3. UNP学习笔记(第二章:传输层)

    本章的焦点是传输层,包括TCP.UDP和SCTP. 绝大多数客户/服务器网络应用使用TCP或UDP.SCTP是一个较新的协议. UDP是一个简单的.不可靠的数据报协议.而TCP是一个复杂.可靠的字节流 ...

  4. 我如何添加一个空目录到Git仓库?

    新建了一个仓库,只是创建一些目录结构,还不里面放什么,要放的内容还没有,还不存在,应该怎么办呢? Git 是不跟踪空目录的,所以需要跟踪那么就需要添加文件! 也就是说 Git 中不存在真正意义上的空目 ...

  5. Win8 恢复传统启动菜单 for 多系统

    如果你安装了Win7和Win8,启动的时候得先启动到Win8然后再启动到Win7,很怀念原来的启动选择器,这里给你方法了~ 当前系统是Win8的输入 bcdedit /set {current} bo ...

  6. Spring学习三----------注入方式

    © 版权声明:本文为博主原创文章,转载请注明出处 Spring注入方式 本篇博客只讲最常用的两种注入方式:设值注入和构造器注入.代码为完整代码,复制即可使用. 1.目录结构 2.pom.xml < ...

  7. Django之便签生成

    myblog_tag.py #coding:utf-8 __author__ = 'similarface'from django import template register=template. ...

  8. 结缘mac

    还记得上一次买MacBookPro.是在去年的7月下旬,记得那次是我大学第一次买电脑,那时候刚准备開始研究android.听stormzhang以及android开发界的大佬们对mac开发androi ...

  9. Linux模块机制浅析_转

    Linux模块机制浅析 转自:http://www.cnblogs.com/fanzhidongyzby/p/3730131.htmlLinux允许用户通过插入模块,实现干预内核的目的.一直以来,对l ...

  10. Ubuntu/CentOS下源码编译安装Php 5.6基本参数

    先确认安装libxml2 apt-get install libxml2 libxml2-dev或者yum install libxml2 libxml2-dev ./configure --pref ...