網路超時設定connectionTimeout和SoTimeout的區別
阿新 • • 發佈:2019-01-05
就是為了記住這兩個超時時間的區別:
簡單總結為:連線時間超時connectionTimeout和讀取資料超時soTimeout
我使用的場景是在android的開源框架Xutils中使用的
http.configTimeout(30000); 連線超時 http.configSoTimeout(timeout)獲取資料超時
一:連線超時:connectionTimeout
1:指的是連線一個url的連線等待時間。
2:設定方法為:
設定一個錯誤的url,l連線超時3000報錯/** * @param args */ public static void main(String[] args) { HttpClient client = new HttpClient(); HttpMethod method = new GetMethod( "http://test.com"); client.getHttpConnectionManager().getParams() .setConnectionTimeout(3000); client.getHttpConnectionManager().getParams().setSoTimeout(3000); try { int statusCode = client.executeMethod(method); System.out.println(statusCode); byte[] responseBody = null; responseBody = method.getResponseBody(); String result = new String(responseBody); System.out.println(result); } catch (HttpException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
二:讀取資料超時:soTimeout
1:指的是連線上一個url,獲取response的返回等待時間
2:設定方法
/** * @param args */ public static void main(String[] args) { HttpClient client = new HttpClient(); HttpMethod method = new GetMethod( "http://localhost:8080/firstTest.htm?method=test"); client.getHttpConnectionManager().getParams() .setConnectionTimeout(3000); client.getHttpConnectionManager().getParams().setSoTimeout(2000); try { int statusCode = client.executeMethod(method); System.out.println(statusCode); byte[] responseBody = null; responseBody = method.getResponseBody(); String result = new String(responseBody); System.out.println(result); } catch (HttpException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }