HttpURLConnection httpUrlConnection;
URL uri=new URL(url);
httpUrlConnection= (HttpURLConnection) uri.openConnection();
httpUrlConnection.setConnectTimeout(10000);
httpUrlConnection.setReadTimeout(10000);
httpUrlConnection.setRequestMethod("GET");
利用java HttpURLConnection设置http请求时间超时时间为10秒,下面是控制台打印的log
12-31 17:39:09.701 17494-17538/com.example.crab.mycameratest I/System.out﹕ [socket][5] connection lh4.googleusercontent.com/173.194.127.75:443;LocalPort=48785(10000)
12-31 17:39:19.743 17494-17538/com.example.crab.mycameratest I/System.out﹕ [socket][6] connection lh4.googleusercontent.com/173.194.127.76:443;LocalPort=52711(10000)
12-31 17:39:29.795 17494-17538/com.example.crab.mycameratest I/System.out﹕ [socket][7] connection lh4.googleusercontent.com/173.194.127.74:443;LocalPort=35041(10000)
12-31 17:39:39.888 17494-17538/com.example.crab.mycameratest I/System.out﹕ [socket][8] connection lh4.googleusercontent.com/173.194.127.75:443;LocalPort=58275(10000)
12-31 17:39:49.933 17494-17538/com.example.crab.mycameratest I/System.out﹕ [socket][9] connection lh4.googleusercontent.com/173.194.127.76:443;LocalPort=55627(10000)
12-31 17:39:59.986 17494-17538/com.example.crab.mycameratest I/System.out﹕ [socket][10] connection lh4.googleusercontent.com/173.194.127.74:443;LocalPort=50005(10000)
12-31 17:40:10.039 17494-17538/com.example.crab.mycameratest W/System.err﹕ java.net.SocketTimeoutException: failed to connect to lh4.googleusercontent.com/173.194.127.74
正常理解的话应该在socket][5] 这个请求不成功的时候就通知HttpURLConnection超时了,但是系统连续发出了
6个Socket请求(socket][5]到socket[10])后在通知HttpURLConnection说sokect超时了,这样总共算起来时间是用去
了60秒应用程序才收到超时,并不是我在应用中设置的10秒后就超时。
想问一下为什么程序不是在第一个Socket[5]就通知应用程序连接超时而是要等到Socket[10]通知应用程序超时呢?
如何设置只在第一次socket失败后就通知应用程序超时发生了?
------解决思路----------------------
超时重新提交请求??
------解决思路----------------------
这个设置很普通吧
------解决思路----------------------
我和你用的同样的方式是有效的呀,你确定抛出的是 timeout的异常么,如果是的话,那就不知道是什么原因了。