首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java HttpURLConnection vs URLConnection:繼承關係與 HTTP 專用功能

     編輯:程式設計疑難解答

類關係圖

java.net.URLConnection (abstract)
       ▲
       │ extends
java.net.HttpURLConnection (concrete, package sun.net.www.protocol.http)

核心差異

特性URLConnectionHttpURLConnection
協議通用(HTTP、FTP、JAR、FILE…)**僅 HTTP/HTTPS**
請求方法無 `setRequestMethod``setRequestMethod("GET"/"POST"/"PUT"…)`
請求頭`setRequestProperty` 通用繼承並新增 `setIfModifiedSince`、`setChunkedStreamingMode` 等
響應頭`getHeaderField` 通用新增 `getResponseCode()`、`getResponseMessage()`、`getHeaderFieldDate()` 等
實例化`url.openConnection()` 返回具體子類HTTP URL 時自動返回此類型

實際使用模式

URL url = new URL("https://api.example.com/data");
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 強轉
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setDoOutput(true);

try (OutputStream os = conn.getOutputStream()) {
    os.write(jsonBytes);
}

int code = conn.getResponseCode(); // 僅 HttpURLConnection 有
if (code == 200) {
    try (InputStream is = conn.getInputStream()) {
        // 讀取響應
    }
}

響應頭處理建議

  • **業務需要時才解析**(如 `Set-Cookie`、`ETag`、`Last-Modified`、`Content-Disposition`)。
  • 通用讀法:`conn.getHeaderField("Header-Name")` 或遍歷 `conn.getHeaderFields()`。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved