故事是剛剛同事打電話來說,目前實作的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~
沒有留言:
張貼留言
留個話吧:)