Java 標準庫 java.net.URL 提供了極簡潔的高層 API,讓我們無需手動處理 Socket 連線與 HTTP 協議細節,即可輕鬆獲取網路資源。本例示範如何透過 URL.openStream() 取得輸入流,配合緩衝讀取器逐行輸出網頁原始碼。
public getURL(String URL) {
try {
URL url = new URL(URL);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
while ((str = in.readLine()) != null) {
display(str); // 輸出每一行
}
in.close();
} catch (MalformedURLException | IOException e) {
// 異常處理
}
}
new URL("https://example.com") 自動解析協議、主機、埠號、路徑。url.openStream() 內部自動完成 TCP 連線、發送 HTTP GET 請求、接收回應並剝離 Header,直接返回實體內容的 InputStream。InputStreamReader 處理位元組到字元轉換(預設 ISO-8859-1,實際應檢測 Content-Type charset),BufferedReader 提供高效 readLine()。null(流結束)。Content-Type Header 或 HTML <meta> 標籤檢測,或使用 URLConnection.getContentEncoding(),再指定正確編碼構建 InputStreamReader。URLConnection conn = url.openConnection(); conn.setConnectTimeout(5000); conn.setReadTimeout(10000);。HttpURLConnection 預設自動跟隨重導向,可透過 setInstanceFollowRedirects(false) 控制。InputStream 寫入 FileOutputStream。URL 類是 Java 網路程式設計的「輕量級利器」,適合快速原型、簡單爬蟲、配置檔拉取等場景。若需精細控制請求 Header、Cookie、POST 表單、HTTPS 憑證等,請改用 HttpURLConnection 或成熟框架(OkHttp, Apache HttpClient)。