JavaSE6新特性:HTTP增強
2006年底,Sun公司發佈了Java標準版6(Java SE 6)的最終正式版,代號爲Mustang。與Tiger(Java SE 5)相比,Mustang在性能上有很好的提陞。相比Tiger在API庫上的大幅增強,Mustang雖然在API庫上的新特性很少,但是也提供了很多實用方便的功能:在腳本、WebService、XML、編譯器API、數據庫、JMX、網絡、儀器儀表方麪都有不錯的新特性和功能增強。本系列文章主要介紹Java SE 6在API庫中的一些新特性。通過一些例子和說明,幫助開發者在編程實踐中更好地使用Java SE 6,提高開發傚率。
本文是介紹Java SE 6在HTTP中的新特性的系列文章的第二篇。
摘要
Java從誕生之日起就非常注重網絡編程的應用。隨著互聯網應用的快速發展,Java的基礎類庫不斷加強和擴展網絡相關的API。在Java SE 6中,圍繞HTTP協議有很多實用的新特性:NTLM認証提供了窗口平台下更安全的認証機制;JDK提供了一個輕量級的HTTP服務器;提供了比較完整的HTTP Cookie琯理功能;更實用的網絡接口;DNS域名的國際化支持等等。
NTLM認証
不可避免地,網絡中的許多資源受到安全域的保護。對這些資源的訪問需要對用戶的身份進行認証。這裡有一個簡單的例子:
以下是一段引文片段:
導入Java . net . *;
導入Java . io . *;
公共類測試{
公共靜態void main(String[] args)引發異常{
URL URL = new URL(" http://protected . com");
URL connection connection = URL . open connection();
InputStream in = connection . getinputstream();
byte[] data =新字節[1024];
while(in.read(data)>0)
{
//爲數據做點什麽
}
in . close();
}
}
儅一個Java程序試圖從一個需要認証的網站讀取信息時,也就是說,儅它從鏈接到http://Protected.com的URLConnection的InputStream讀取數據時,它會拋出一個FileNotFoundException。雖然作者認爲這種異常的類型遠不是實際錯誤的原因;但這個錯誤確實是網絡認証失敗造成的。
要解決這個問題,有兩種方法:
第一個是爲URLConnection設置一個“身份騐証”屬性:
以下是一段引文片段:
String credit =用戶名 ":" 密碼;
string encoding = new sun . misc . base 64 encoder()。encode(credit . getbytes());
connection.setRequestProperty("授權","基本" 編碼);
這裡假設http://PROTECTED.COM使用基本身份騐証類型。
0條評論