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

如何判斷伺服器是否支援斷點續傳(Range 下載)

     編輯:程式設計綜合問答

問題背景

在實作檔案下載功能時,常需確認伺服器是否支援 Range 標頭,以實現斷點續傳或多執行緒下載。單純取得 Content-Length 並不足以判斷。

正確判斷步驟

  1. 發送帶 Range 標頭的請求:必須在請求中加入 Range: bytes=start-end,否則伺服器預設會回傳 Accept-Ranges: bytes 即使實際不支援。
  2. 檢查回應標頭:查看 Accept-Ranges 欄位是否為 bytes,且狀態碼為 206 Partial Content。

程式碼範例 (Java)

URL downloadUrl = new URL(fileUrl);
URLConnection conn = downloadUrl.openConnection();
// 關鍵:必須設定 Range 標頭
conn.setRequestProperty("Range", "bytes=0-1023"); 

String acceptRanges = conn.getHeaderField("Accept-Ranges");
int responseCode = ((HttpURLConnection) conn).getResponseCode();

if (responseCode == 206 && "bytes".equalsIgnoreCase(acceptRanges)) {
    System.out.println("伺服器支援斷點續傳");
} else {
    System.out.println("伺服器不支援斷點續傳");
}

注意事項

若未設定 Range 標頭直接請求,許多伺服器仍會回傳 Accept-Ranges: bytes,導致誤判。務必在請求中包含具體的位元組範圍才能得到真實的支援狀態。

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