当前位置: 代码迷 >> Android >> java HttpURLConnection 设置超时没有效果,该怎么处理
  详细解决方案

java HttpURLConnection 设置超时没有效果,该怎么处理

热度:502   发布时间:2016-04-28 02:42:38.0
java HttpURLConnection 设置超时没有效果
 
        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失败后就通知应用程序超时发生了?

------解决思路----------------------
超时重新提交请求??
------解决思路----------------------
这个设置很普通吧
------解决思路----------------------
引用:
Quote: 引用:

超时重新提交请求??

就是不知道底层是怎么做的,它要6次后才会在应用程序抛出SocketTimeout的异常,我想在10秒后应用程序就接受到这个异常而不是等60秒后。
我和你用的同样的方式是有效的呀,你确定抛出的是 timeout的异常么,如果是的话,那就不知道是什么原因了。
  相关解决方案