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

Android DefaultHttpClient 連線與讀取逾時設定詳解

     編輯:程式設計綜合問答

兩種逾時參數

參數方法含義
Connection TimeoutHttpConnectionParams.setConnectionTimeout(params, 3000)建立 TCP 連線最長等待時間(毫秒)
Socket Timeout (SO_TIMEOUT)HttpConnectionParams.setSoTimeout(params, 15000)資料傳輸間隔最長等待時間,即讀取資料逾時

逾時異常層級

  • 連線逾時 → ConnectTimeoutException(繼承 IOException)
  • 讀取逾時 → SocketTimeoutException(繼承 InterruptedIOException → IOException)
  • 兩者皆可用 catch (IOException e) 捕捉

精準捕捉範例

try {
    HttpResponse response = httpclient.execute(httpget);
    // 處理回應
} catch (SocketTimeoutException e) {
    Log.e(TAG, "讀取逾時", e);
    // 重試或提示網路慢
} catch (ConnectTimeoutException e) {
    Log.e(TAG, "連線逾時", e);
    // 檢查網路/伺服器
} catch (IOException e) {
    Log.e(TAG, "其他 IO 錯誤", e);
}

驗證測試

HttpParams params = new BasicHttpParams();
HttpConnectionParams.setSoTimeout(params, 1); // 1ms 極短逾時
DefaultHttpClient client = new DefaultHttpClient(params);
client.execute(new HttpGet("https://google.com")); // 必拋 SocketTimeoutException

注意

DefaultHttpClient 已在 API 22 棄用,新專案請改用 HttpURLConnection、OkHttp 或 Retrofit。

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