Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:仅在更改后下载文件_Android_Http - Fatal编程技术网

Android:仅在更改后下载文件

Android:仅在更改后下载文件,android,http,Android,Http,我想写一个android应用程序,它需要来自web的数据。此信息存储在json文件中。json文件中的数据保存在设备上。为了保持最新,我需要每小时检查文件中的更改 由于远程文件可能会变得相当大,我只想在它与以前下载的版本不同的情况下下载它。我考虑使用最后一次修改的HTTP头来实现这一点 我提出了以下工作流(伪代码): data=null;数据\时间戳=空 每小时重复一次: 向URL和选项new\u timestampfromLast Modified头发出HTTP头请求 如果data==nu

我想写一个android应用程序,它需要来自web的数据。此信息存储在json文件中。json文件中的数据保存在设备上。为了保持最新,我需要每小时检查文件中的更改

由于远程文件可能会变得相当大,我只想在它与以前下载的版本不同的情况下下载它。我考虑使用最后一次修改的HTTP头来实现这一点

我提出了以下工作流(伪代码):

  • data=null;数据\时间戳=空
  • 每小时重复一次:
    • 向URL和选项
      new\u timestamp
      from
      Last Modified
      头发出HTTP头请求
    • 如果
      data==null
      new\u timestamp>data\u timestamp
      • 向URL发出普通HTTP请求
      • 保存到
        data
        并设置
        data\u timestamp=new\u timestamp
你认为这是一个合理的方法吗?我可以使用
if-modified-since
HTTP头来获取自上次下载以来发生更改的数据。这将为我节省一个请求。如果已更改,则提供包含新数据的正文,如果未更改,则正文为空


我还考虑过使用etag,因为如果文件有新内容(而不是修改日期发生变化),我通常希望下载,但我的web服务器(nginx)不支持创建etag,出于性能原因,我不想在服务器端涉及另一层

您应该考虑使用而不是依赖
HTTP头
。是的


您也可以看到a来帮助解释一些概念。

我解决了上面我描述的问题:使用
下载文件(如果从
HTTP头修改)。可以将
ngnix
webserver配置为返回有关此头的正确信息。

我已经看过etag,但我的webserver(ngnix)目前不支持开箱即用。但是谢谢你的提示。