下载文件
FileUtil fileUtils = new FileUtil();
URL url = new URL(urlStr);
urlConn = (HttpURLConnection) url.openConnection();
urlConn.setRequestProperty("Accept-Encoding", "identity");
urlConn.connect();
long fileSize = urlConn.getContentLength();
inputStream = new BufferedInputStream(urlConn.getInputStream());
Log.e(urlStr, "filesize = " + fileSize);
MyLog.getInstance().writeMessage(TAG, "下载的zip包大小为 = " + fileSize + "字节");
根据API中setConnectTimeout的描述,不设置就是0,也就是infinite timeout,我的理解是永远不会超时。
但是实际情况是:
第一次15:48:23开始下载,15:53:32超时,5分9秒
第二次15:57:13开始下载,16:03:32超时,6分9秒
第三次16:27:04开始下载,16:37:14超时,10分10秒
参考文章:http://stackoverflow.com/questions/9986712/receiving-request-timeout-even-though-connect-timeout-and-read-timeout-is-set-to
引用答案中的一句话:
It might be possible that the server you are connecting to is timing out your client.
于是,问了服务器的同事,ngix配置中果然设置了超时。但是服务器超时时间设置的是60s,为什么我超时的时间却是5分钟,甚至10分钟呢?
不清楚,不明白。
PS: 超时分两种,connect timeout 和 read timeout,一个是建立连接的超时时间,一个是传递数据的超时时间。
http://stackoverflow.com/questions/3069382/what-is-the-difference-between-connection-and-read-timeout-for-sockets