今天在測試 的時候異常發現超時設置盡然沒有生效,很是納悶,原先是只設置了connenctionTImeout發現超時無效 ,百度后加上了Socket超時
在HTTP請求時候總是設置兩個參數,就是連接超時和Socket超時
1 public static final String SO_TIMEOUT = "http.socket.timeout"; 2 public static final String CONNECTION_TIMEOUT ="http.connection.timeout";
解析:
一次http請求,必定會有三個階段,一:建立連接;二:數據傳送;三,斷開連接。
當建立連接在規定的時間內(ConnectionTimeOut )沒有完成,那么此次連接就結束了。后續的SocketTimeOutException就一定不會發生。只有當連接建立起來后,
也就是沒有發生ConnectionTimeOutException ,才會開始傳輸數據,如果數據在規定的時間內(SocketTimeOut)傳輸完畢,則斷開連接。否則,觸發SocketTimeOutException