java.net.URL超時時間默認無限制問題小結
Java中開發(fā)網絡應用時,通常使用URLConnection或HttpURLConnection。文章介紹了如何通過setConnectTimeout和setReadTimeout設置連接和讀取超時,以避免因網絡問題導致的長時間等待。默認情況下,Java的超時時間是無限的。通過httpstat.us網站可以測試不同延遲的請求,演示了如何通過調整超時時間處理超時異常。
Java中可以通過URLConnection類或者HttpURLConnection類來開發(fā)網絡應用,它們內部又是通過java.net.URL類來實現的??梢酝ㄟ^URLConnection.setConnectTimeout()方法和URLConnection.setReadTimeout()方法來設置URLConnection連接和讀取的超時時間。
URL url = new URL("Example Domain");
URLConnection connection = url.openConnection();
connection.setConnectTimeout(5000); //連接超時時間5秒
connection.setReadTimeout(10000); //讀取數據的超時時間10秒其中setConnectTimeout()設置連接超時時間,單位毫秒
setReadTimeout()設置讀取數據的超時時間,單位毫秒
這兩個方法都是可選的,如果不設置超時時間,就會使用系統(tǒng)默認的超時時間。 Java默認的超時時間是無限大,也就是不限制超時時間。所以在開發(fā)中,應該根據實際情況設置合理的超時時間,避免因網絡故障等原因導致程序長時間等待而出現問題。
例如:直接使用new Url().openStream()就會導致超時無限制問題
源碼:

測試超時時間:
可以使用 httpstat.us 這個網站來測試URL請求的超時時間。
該網站提供了一些測試URL,可以模擬不同延遲的網絡請求。
例如,可以使用URL http://httpstat.us/200?sleep=5000 來模擬延遲5秒的請求,其中的sleep參數表示需要睡眠的毫秒數。設置連接超時和讀取超時時間為4秒,代碼如下所示:
import java.net.*;
public class TimeoutTest {
public static void main(String[] args) {
try {
URL url = new URL("http://httpstat.us/200?sleep=5000");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(4000); //連接超時時間4秒
conn.setReadTimeout(4000); //讀取數據的超時時間4秒
conn.setRequestMethod("GET");
conn.connect();
int statusCode = conn.getResponseCode();
System.out.println("statusCode=" + statusCode);
} catch (Exception e) {
System.out.println("timeout error: " + e.getMessage());
}
}
}運行該代碼,將會在4秒后輸出"timeout error: connect timed out",表明連接超時了。將連接超時和讀取超時時間改成6秒,則可以收到"statusCode=200"的響應,表明請求成功。
相關文章
response.sendRedirect()實現重定向(頁面跳轉)
在Java web開發(fā)中,使用response.sendRedirect()可實現重定向功能。本文將介紹如何使用該方法進行頁面跳轉,以及該方法的使用場景和注意事項,感興趣的可以了解一下2023-04-04
MyBatis在注解上使用動態(tài)SQL方式(@select使用if)
這篇文章主要介紹了MyBatis在注解上使用動態(tài)SQL方式(@select使用if),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
SpringCloud中的openFeign調用服務并傳參的過程
服務和服務之間通信,不僅僅是調用,往往在調用過程中還伴隨著參數傳遞,接下來重點來看看OpenFeign在調用服務時如何傳遞參數,感興趣的朋友一起看看吧2023-11-11
kkFileView在線預覽office的常見問題以及解決方案
kkFileView在線預覽Office常見問題包括base64編碼配置、Office組件安裝、亂碼處理及水印添加,解決方案涉及版本適配、安裝LibreOffice、設置編碼和字體路徑,以及通過URL參數傳遞水印文本2025-07-07

