- 相關(guān)推薦
關(guān)于JAVA請(qǐng)求需要Basic身份驗(yàn)證的網(wǎng)頁
通過JAVA抓取頁面時(shí),有些頁面會(huì)返回401(Unauthorized)響應(yīng)狀態(tài)碼和www-authenticate響應(yīng)頭來要求客戶端進(jìn)行身份認(rèn)證。這種認(rèn)證有兩種方式:BASIC和DIGEST,BASIC驗(yàn)證要求客戶端對(duì)用戶名和密碼進(jìn)行BASE64編碼后傳送給服務(wù)器。DIGEST的認(rèn)證方式的細(xì)節(jié)比較復(fù)雜,會(huì)經(jīng)過一系列的加密,所以很難被破譯。
JAVA提供一個(gè)用于啟用身份認(rèn)證的類,可以支持HTTP協(xié)議中的多個(gè)認(rèn)證方式,這個(gè)類是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"; // 用戶名
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的類,并且重寫其中的getPasswordAuthentication()方法,將用戶名和密碼放入方法中,這樣在需要使用身份認(rèn)證的地方實(shí)現(xiàn)這個(gè)類就可以了。
【JAVA請(qǐng)求需要Basic身份驗(yàn)證的網(wǎng)頁】相關(guān)文章:
網(wǎng)頁美工需要掌握哪些電腦常識(shí)03-18
網(wǎng)頁美工設(shè)計(jì)需要注意的細(xì)節(jié)03-13
如何透過客戶表面請(qǐng)求來滿足其實(shí)質(zhì)需要03-22
談?wù)劸W(wǎng)頁美工設(shè)計(jì)需要注意的三大細(xì)節(jié)03-20
PHP如何通過會(huì)話控制實(shí)現(xiàn)身份驗(yàn)證03-29
日語語法之請(qǐng)求的表達(dá)03-09
網(wǎng)頁美工必備的知識(shí):網(wǎng)頁設(shè)計(jì)命名規(guī)范03-18
學(xué)習(xí)Java的技巧03-05
java習(xí)題及答案03-26