关于setConnectTimeout和setReadTimeout的问题
2018-01-04 18:05
561 查看
1、问题描述
这几天测试重构后的下载框架,发现在下载过程中如果网络中断或网络较差,个别应用的下载就会阻塞卡住,一直卡在 “正在下载 xx%”。2、问题排查和定位
思考:网络差不应该报网络异常的错误或者直接抛timeout异常吗?所以马上去检查Http请求的地方:发现在DownloadThread中使用HttpURLConnection进行网络请求时只是设置了connectTimeout,这样在建立连接的时候如果网络中断,那么超时以后就会报出错误,这里是没有问题的。会不会是还少设置了其他参数的原因呢?于是赶紧去查阅资料:
ConnectTimeout只有在网络正常的情况下才有效,而当网络不正常时,ReadTimeout才真正的起作用,即IdIOHandlerStack 里的 WaitFor 是受ReadTimeout限制的,因此,这2个属性应该结合实用。
connect timeout 是建立连接的超时时间;
read timeout,是传递数据的超时时间。
正确的方法应当是调用HttpURLConnection的时候同时设置这两个超时时间。
一看代码,果然漏了setReadTimeout。。。。。OMG 。。。
3、解决方案
同时设置这两个超时时间:HttpURLConnection urlCon = (HttpURLConnection)url.openConnection();
urlCon.setConnectTimeout(20*1000);
urlCon.setReadTimeout(20*1000);
相关文章推荐
- 关于setConnectTimeout和setReadTimeout的问题
- 关于setConnectTimeout和setReadTimeout的问题
- setConnectTimeout和setReadTimeout的问题
- 解决HttpURLConnection setConnectTimeout超时无响应的问题
- 解决HttpURLConnection setConnectTimeout超时无响应的问题
- setConnectTimeout,setReadTimeout
- 解决HttpURLConnection setConnectTimeout超时无响应的问题
- JMeter测试问题java.net.SocketTimeoutException: connect timed out,Read timed out
- 关于connect: network is unreachable 问题的解决
- 关于java连接redis数据库报: Connection refused: connect 的问题
- 关于QTableWidget使用setCellWidget嵌入控件错位的问题
- 关于ImageIO: CGImageRead_mapData 'open' failed ' XXX error = 2 (No such file or directory)问题
- 关于MySQL的wait_timeout连接超时问题报错解决方案
- 关于redis的pconnect和connect,使用中出现的问题
- 关于MySQL的wait_timeout连接超时问题报错解决方案
- STL中关于map和set的四个问题?
- 关于程序工作路径问问题setcurrentdirectory
- 关于集合的再补充,Set集合的唯一性,与集合的null值null键问题
- 关于 S40 Http set-cookie的问题
- urlopen关于超时timeout问题的解释