我进行了一些大型下载。当我连接3G开始下载时,一切正常。然后,我切换到WiFi连接,但请求返回超时异常。我使用了HttpClient库。我实现了重试机制,因此当请求返回异常时,它会等待0.5秒并尝试再次执行。我期望在连接到WiFi后,Http请求可以执行。但似乎Http execute方法始终返回null响应。非常奇怪,如果我再次切换回3G,execute方法仍然会返回一个良好的响应。有人可以帮帮我吗:)?
我进行了一些大型下载。当我连接3G开始下载时,一切正常。然后,我切换到WiFi连接,但请求返回超时异常。我使用了HttpClient库。我实现了重试机制,因此当请求返回异常时,它会等待0.5秒并尝试再次执行。我期望在连接到WiFi后,Http请求可以执行。但似乎Http execute方法始终返回null响应。非常奇怪,如果我再次切换回3G,execute方法仍然会返回一个良好的响应。有人可以帮帮我吗:)?
首先,对于大文件来说,使用DownloadManager可能更加方便-它可以处理重试和其他一切。
至于HttpClient-已知存在一些问题,但我不确定你是否遇到了其中之一或者只是忽略了某些东西。自Gingerbread以来,它已经被弃用,您可以尝试使用HttpUrlConnection代替,据说比HttpClient问题更少。
此外,在WIFI和蜂窝网络之间切换时,HttpClient可能需要完全重新初始化,这里有http range header告诉服务器从哪个字节继续下载。但同样,我建议您尝试使用DownloadManager,它可能会为您节省很多时间。