首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 使用 URL 與 URLConnection 讀取網絡資源完整指南

     編輯:Java 相關知識

Java 標準庫 java.net 提供 URL 與 URLConnection 類,可輕鬆實現類似瀏覽器的網頁下載與資源元數據獲取,是構建自定義爬蟲、下載器或瀏覽器內核的基礎。

核心類與流程

  1. URL:封裝統一資源定位符,提供 openConnection() 建立連接。
  2. URLConnection:代表與資源的通信鏈接,提供 connect()、getInputStream() 及豐富的元數據方法。

完整範例:從標準輸入讀取 URL 並顯示元數據與內容

import java.net.URL;
import java.net.URLConnection;
import java.io.*;
import java.util.Date;

public class UrlContentReader {
    public void display() {
        byte[] buf = new byte[1024];
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
            System.out.print("請輸入文件的 URL 地址: ");
            String addr = reader.readLine().trim();

            URL url = new URL(addr);
            URLConnection conn = url.openConnection();
            conn.connect(); // 實際發起請求

            // 顯示元數據
            System.out.println("內容類型: " + conn.getContentType());
            System.out.println("內容編碼: " + conn.getContentEncoding());
            System.out.println("內容長度: " + conn.getContentLength());
            System.out.println("創建日期: " + new Date(conn.getDate()));
            System.out.println("最後修改: " + new Date(conn.getLastModified()));
            System.out.println("過期日期: " + new Date(conn.getExpiration()));

            // 讀取並輸出內容
            try (InputStream in = conn.getInputStream();
                 BufferedInputStream bin = new BufferedInputStream(in)) {
                int bytesRead;
                while ((bytesRead = bin.read(buf)) != -1) {
                    System.out.write(buf, 0, bytesRead);
                }
            }
        } catch (IOException e) {
            System.err.println("讀取失敗: " + e.getMessage());
        }
    }

    public static void main(String[] args) {
        new UrlContentReader().display();
    }
}

關鍵點補充

  • 超時控制:conn.setConnectTimeout(5000); conn.setReadTimeout(5000); (需轉型為 HttpURLConnection)。
  • 請求屬性:conn.setRequestProperty("User-Agent", "Mozilla/5.0"); 模擬瀏覽器。
  • 處理重定向:HttpURLConnection 預設自動跟隨,可用 setInstanceFollowRedirects(false) 關閉。
  • HTTPS 支援:JDK 內置支援,若遇憑證問題需配置 TrustManager。
  • 編碼處理:優先從 Content-Type 解析 charset,缺失時預設 UTF-8。

進階應用場景

  • 構建簡易瀏覽器內核 (搭配 Swing/JavaFX WebView)。
  • 實現斷點續傳 (利用 Range 請求頭)。
  • API 客戶端基礎封裝 (REST、SOAP)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved