一个 CookieManager 里面有一个 CookieStore 和一个 CookiePolicy,分别负责储存 Cookie 和规定策略。用户可以指定两者,也可以使用系统默认的 CookieManger.例子下面这个简单的例子说明了 Cookie 相关的管理功能:// 创建一个默认的 CookieManagerCookieManager manager = new CookieManager();// 将规则改掉,接受所有的 Cookiemanager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);// 保存这个定制的 CookieManagerCookieHandler.setDefault(manager); // 接受 HTTP 请求的时候,得到和保存新的 CookieHttpCookie cookie = new HttpCookie("……(name)……","……(value)……");manager.getCookieStore()。add(uri, cookie); // 使用 Cookie 的时候:// 取出 CookieStore CookieStore store = manager.getCookieStore();// 得到所有的 URI List uris = store.getURIs();for (URI uri : uris) { // 筛选需要的 URI // 得到属于这个 URI 的所有 Cookie List cookies = store.get(uri); for (HttpCookie cookie : cookies) { // 取出了 Cookie }} // 或者,取出这个 CookieStore 里面的全部 Cookie// 过期的 Cookie 将会被自动删除List cookies = store.getCookies();for (HttpCookie cookie : cookies) { // 取出了 Cookie}
其他新特性NetworkInterface 的增强从 Java SE 1.4 开始,JDK 当中出现了一个网络工具类 java.net.NetworkInterface,提供了一些网络的实用功能。 在 Java SE 6 当中,这个工具类得到了很大的加强,新增了很多实用的方法。例如:public boolean isUp()用来判断网络接口是否启动并运行public boolean isLoopback()用来判断网络接口是否是环回接口(loopback)public boolean isPointToPoint()用来判断网络接口是否是点对点(P2P)网络public boolean supportsMulticast()用来判断网络接口是否支持多播public byte[] getHardwareAddress()用来得到硬件地址(MAC)public int getMTU()用来得到最大传输单位(MTU,Maximum Transmission Unit)public boolean isVirtual()用来判断网络接口是否是虚拟接口关于此工具类的具体信息,请参考 Java SE 6 相应文档(见 参考资源)。域名的国际化在最近的一些 RFC 文档当中,规定 DNS 服务器可以解析除开 ASCII 以外的编码字符。有一个算法可以在这种情况下做 Unicode 与 ASCII 码之间的转换,实现域名的国际化。java.net.IDN 就是实现这个国际化域名转换的新类,IDN 是“国际化域名”的缩写(internationalized domain names)。这个类很简单,主要包括 4 个静态函数,做字符的转换。结语
Java SE 6 有着很多 HTTP 相关的新特性,使得 Java SE 平台本身对网络编程,尤其是基于 HTTP 协议的因特网编程,有了更加强大的支持。