设为首页 加入收藏

TOP

JavaSE6新特性:HTTP增强
2014-11-23 20:06:50 】 浏览:7536
Tags:JavaSE6 特性 HTTP 增强

  2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马)。跟 Tiger(Java SE 5)相比,Mustang 在性能方面有了不错的提升。与 Tiger 在 API 库方面的大幅度加强相比,虽然 Mustang 在 API 库方面的新特性显得不太多,但是也提供了许多实用和方便的功能:在脚本,WebService,XML,编译器 API,数据库,JMX,网络和 Instrumentation 方面都有不错的新特性和功能加强。 本系列文章主要介绍 Java SE 6 在 API 库方面的部分新特性,通过一些例子和讲解,帮助开发者在编程实践当中更好的运用 Java SE 6,提高开发效率。


  本文是系列文章的第二篇,介绍了Java SE 6 在 HTTP 方面的新特性。


  概述


  Java 语言从诞生的那天起,就非常注重网络编程方面的应用。随着互联网应用的飞速发展,Java 的基础类库也不断地对网络相关的 API 进行加强和扩展。在 Java SE 6 当中,围绕着 HTTP 协议出现了很多实用的新特性:NTLM 认证提供了一种 Window 平台下较为安全的认证机制;JDK 当中提供了一个轻量级的 HTTP 服务器;提供了较为完善的 HTTP Cookie 管理功能;更为实用的 NetworkInterface;DNS 域名的国际化支持等等。


  NTLM 认证


  不可避免,网络中有很多资源是被安全域保护起来的。访问这些资源需要对用户的身份进行认证。下面是一个简单的例子:


  以下是引用片段:


  import java.net.*;


  import java.io.*;


  public class Test {


  public static void main(String[] args) throws Exception {


  URL url = new URL("http://PROTECTED.com");


  URLConnection connection = url.openConnection();


  InputStream in = connection.getInputStream();


  byte[] data = new byte[1024];


  while(in.read(data)>0)


  {


  //do something for data


  }


  in.close();


  }


  }


  当 Java 程序试图从一个要求认证的网站读取信息的时候,也就是说,从联系于 http://Protected.com 这个 URLConnection 的 InputStream 中 read 数据时,会引发 FileNotFoundException。尽管笔者认为,这个 Exception 的类型与实际错误发生的原因实在是相去甚远;但这个错误确实是由网络认证失败所导致的。


  要解决这个问题,有两种方法:


  其一,是给 URLConnection 设定一个“Authentication”属性:


  以下是引用片段:


  String credit = USERNAME + ":" + PASSWORD;


  String encoding = new sun.misc.BASE64Encoder().encode (credit.getBytes());


  connection.setRequestProperty ("Authorization", "Basic " + encoding);


  这里假设 http://PROTECTED.COM 使用了基本(Basic)认证类型。


  相关链接:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇教程:XSLTDesigner快速入门指南 下一篇Java程序开发中代理技术的使用方法

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目