【问题标题】:Downloading the latest version of a file下载文件的最新版本
【发布时间】:2012-11-13 16:57:50
【问题描述】:

我正在使用以下代码从我控制的网络服务器下载文件

URL url = new URL("http://........");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setDefaultUseCaches(false);
connection.setUseCaches(false);
connection.setRequestMethod("GET");
connection.setDoOutput("true");
connection.connect();

InputStream in = connection.getInputStream();
File dst = new File(".......");
FileOutputStream out = new FileOutputStream(dst);
byte[] buffer = new byte[1024];
int len = 0;
while ((len=in.read(buffer))>0) {
    out.write(buffer,0,len);
}

connection.disconnect();
in.close();
out.close();

减去所有必要的尝试捕获。上面的代码适用于将文件下载到我的特定目的地。但是无法下载最新版本(例如,如果我更改网络服务器上的文件内容)

就好像某物保留了它之前下载的文件的某种缓存,只要 URL 与以前相同,它就会发回相同的文件。我的数据连接在下载期间变为活动状态,因此我的服务提供商可能就是这种情况

我需要某种方式来强制我的代码主动刷新目标文件。我发现网络浏览器能够做到这一点。如果我要使用网络浏览器输入链接,然后再次运行我的代码,则会下载最新版本

【问题讨论】:

    标签: android download httpurlconnection


    【解决方案1】:

    尝试在网址末尾添加?time=201211261200。

    【讨论】:

    • 这不起作用..我目前仍然能够下载我已经在服务器上删除的文件
    • 这不是随机的,它是固定的,只会帮助 1 次。 (第一次通话)
    • @PoweRoy 我的意思是,你应该每次添加一个不同的数字,当前时间是一个不错的选择。
    【解决方案2】:

    要么在服务器上修复它,要么在客户端修复它。

    客户端:尝试通过添加随机值使 URL 随机化。因此,将始终下载最新版本。

    Random r = new Random();
    int someValue = r.nextInt(10000);
    
    "http://someurl" + "?t=" + someValue;
    

    【讨论】:

      猜你喜欢
      • 2014-07-27
      • 1970-01-01
      • 2014-03-22
      • 2020-09-12
      • 2014-02-21
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多