轉(zhuǎn)帖|其它|編輯:郝浩|2010-06-09 10:02:11.000|閱讀 594 次
概述:通過(guò)JAVA抓取頁(yè)面時(shí),有些頁(yè)面會(huì)返回401(Unauthorized)響應(yīng)狀態(tài)碼和www-authenticate響應(yīng)頭來(lái)要求客戶(hù)端進(jìn)行身份認(rèn)證。這種認(rèn)證有兩種方式:BASIC和DIGEST,BASIC驗(yàn)證要求客戶(hù)端對(duì)用戶(hù)名和密碼進(jìn)行BASE64編碼后傳送給服務(wù)器。DIGEST的認(rèn)證方式的細(xì)節(jié)比較復(fù)雜,會(huì)經(jīng)過(guò)一系列的加密,所以很難被破譯。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
通過(guò)JAVA抓取頁(yè)面時(shí),有些頁(yè)面會(huì)返回401(Unauthorized)響應(yīng)狀態(tài)碼和www-authenticate響應(yīng)頭來(lái)要求客戶(hù)端進(jìn)行身份認(rèn)證。這種認(rèn)證有兩種方式:BASIC和DIGEST,BASIC驗(yàn)證要求客戶(hù)端對(duì)用戶(hù)名和密碼進(jìn)行BASE64編碼后傳送給服務(wù)器。DIGEST的認(rèn)證方式的細(xì)節(jié)比較復(fù)雜,會(huì)經(jīng)過(guò)一系列的加密,所以很難被破譯。
JAVA提供一個(gè)用于啟用身份認(rèn)證的類(lèi),可以支持HTTP協(xié)議中的多個(gè)認(rèn)證方式,這個(gè)類(lèi)是java.net.Authenticator,使用方法如下:
Java 代碼
1.package com.xixuyishi; 2. 3.import java.io.BufferedReader; 4.import java.io.InputStream; 5.import java.io.InputStreamReader; 6.import java.net.Authenticator; 7.import java.net.PasswordAuthentication; 8.import java.net.URL; 9. 10.public class RunHttpSpnego { 11. 12. static final String kuser = "username"; // 用戶(hù)名 13. static final String kpass = "password"; // 密碼 14. static class MyAuthenticator extends Authenticator { 15. 16. @Override 17. public PasswordAuthentication getPasswordAuthentication() { 18. return (new PasswordAuthentication(kuser, kpass.toCharArray())); 19. } 20. } 21. 22. public static void main(String[] args) throws Exception { 23. Authenticator.setDefault(new MyAuthenticator()); 24. URL url = new URL(args[0]); 25. InputStream ins = url.openConnection().getInputStream(); 26. BufferedReader reader = new BufferedReader(new InputStreamReader(ins)); 27. String str; 28. while ((str = reader.readLine()) != null) 29. System.out.println(str); 30. } 31.} |
只需要?jiǎng)?chuàng)建一個(gè)繼續(xù)自Authenticator的類(lèi),并且重寫(xiě)其中的getPasswordAuthentication()方法,將用戶(hù)名和密碼放入方法中,這樣在需要使用身份認(rèn)證的地方實(shí)現(xiàn)這個(gè)類(lèi)就可以了。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載