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

Java Socket 程式設計入門:URLConnection 輕鬆實現 HTTP 通訊

     編輯:Java 程式設計入門

前言:三大核心類與隱藏捷徑

java.net 套件提供 Socket、ServerSocket、URLConnection 三大核心類。其中 URLConnection 是被忽視的「秘密武器」:它封裝了 Socket 底層細節,讓開發者以高層抽象輕鬆實現 HTTP 請求/回應,無需手動管理連線、流、協議解析。

URLConnection 四步走流程

  1. 建立 URLConnection 實例
  2. 配置請求屬性(setter 方法)
  3. 發起連線
  4. 處理回應資料(getter 方法)

實戰範例:抓取 Yahoo 首頁原始碼

架構設計

public class URLClient {
    protected URLConnection connection;
    
    public static void main(String[] args) {
        URLClient client = new URLClient();
        String yahoo = client.getDocumentAt("https://www.yahoo.com");
        System.out.println(yahoo);
    }
    
    public String getDocumentAt(String urlString) { ... }
}

核心實作:getDocumentAt() 深度解析

public String getDocumentAt(String urlString) {
    StringBuffer document = new StringBuffer();
    try {
        // 1. 建立 URL 物件
        URL url = new URL(urlString);
        
        // 2. 開啟連線(隱含建立 Socket、發送 HTTP 請求)
        URLConnection conn = url.openConnection();
        
        // 3. 流包裝鏈:InputStream → InputStreamReader → BufferedReader
        // 此為 Java I/O 經典裝飾者模式應用,必須熟練掌握
        BufferedReader reader = new BufferedReader(
            new InputStreamReader(conn.getInputStream()));
        
        // 4. 逐行讀取,保留原始換行格式
        String line = null;
        while ((line = reader.readLine()) != null) {
            document.append(line).append("\n");
        }
        
        // 5. 關閉資源
        reader.close();
        
    } catch (MalformedURLException e) {
        System.out.println("URL 格式錯誤: " + urlString);
    } catch (IOException e) {
        System.out.println("IO 異常: " + urlString);
    }
    return document.toString();
}

關鍵技術點詳解

  • 流包裝技術:BufferedReader 包裝 InputStreamReader 再包裝 InputStream,實現高效緩衝字元讀取。readLine() 遇換行符返回、連線關閉返回 null,這是阻塞式 I/O 特性。
  • 異常處理:MalformedURLException 捕獲 URL 格式錯誤;IOException 涵蓋連線失敗、讀取中斷等網路異常。
  • 資源管理:finally 區塊確保 reader 關閉(範例簡化為 try 內關閉,生產環境建議用 try-with-resources)。

總結:五步掌握 URLConnection

  1. 用有效 URL String 實例化 URL
  2. 呼叫 openConnection() 建立連線
  3. 將 InputStream 包裝為 BufferedReader
  4. 循環讀取回應內容
  5. 關閉 Reader 釋放資源

延伸思考

URLConnection 雖簡便,但屬同步阻塞模型,高併發場景下易成瓶頸。現代開發可考慮 HttpClient (Apache)、OkHttp、Java 11+ HttpClient API 等非同步/連線池方案。但理解 URLConnection 仍是掌握 Java 網路編程基石的必修課。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved