程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 使用JAVA請求需要Basic身份驗證的網頁

使用JAVA請求需要Basic身份驗證的網頁

編輯:關於JAVA

通過Java抓取頁面時,有些頁面會返回401(Unauthorized)響應狀態碼和www-authenticate響應頭來要求客戶端進行身份認證。這種認證有兩種方式:BASIC和DIGEST,BASIC驗證要求客戶端對用戶名和密碼進行BASE64編碼後傳送給服務器。DIGEST的認證方式的細節比較復雜,會經過一系列的加密,所以很難被破譯。

  JAVA提供一個用於啟用身份認證的類,可以支持HTTP協議中的多個認證方式,這個類是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.}

  只需要創建一個繼續自Authenticator的類,並且重寫其中的getPassWordAuthentication()方法,將用戶名和密碼放入方法中,這樣在需要使用身份認證的地方實現這個類就可以了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved