故事是剛剛同事打電話來說,目前實作的REST CLIENT對於TIMEOUT的
Request無法有效擷取到例外事件處理!!
找到以下這篇討論也是解法:Java URLConnection Timeout
try{
URL url = new URL("http://www.myurl.com/sample.xml");
URLConnection urlConn = url.openConnection();
urlConn.setConnectTimeout(15000);
urlConn.setReadTimeout(15000);
urlConn.setAllowUserInteraction(false);
urlConn.setDoOutput(true);
InputStream inStream = urlConn.getInputStream();
InputSource input = new InputSource(inStream);
}catch(SocketTimeoutException e){
}catch(IOException e){
}
要自已設這二個參數然後在擷SocketTimeoutException
urlConn.setConnectTimeout(connectTimeout);urlConn.setReadTimeout(socketTimeout);
另外一個方法擷至此文(JDK中的URLConnection參數詳解):
HttpURLConnection是基于HTTP協議的,其底層通過socket通信實現。如果不設置超時(timeout),在網絡異常的情況下,可能會導致程序僵死而不繼續往下執行。可以通過以下兩個語句來設置相應的超時: System.setProperty("sun.net.client.defaultConnectTimeout", 超時毫秒數字符串); System.setProperty("sun.net.client.defaultReadTimeout", 超時毫秒數字符串);其中: sun.net.client.defaultConnectTimeout:連接主機的超時時間(單位:毫秒) sun.net.client.defaultReadTimeout:從主機讀取數據的超時時間(單位:毫秒)例如: System.setProperty("sun.net.client.defaultConnectTimeout", "30000"); System.setProperty("sun.net.client.defaultReadTimeJava中可以使用HttpURLConnection來請求WEB資源。 HttpURLConnection對象不能直接構造,需要通過URL.openConnection()來獲得HttpURLConnection
明天再來修正一下寫的CODE~
沒有留言:
張貼留言
留個話吧:)