Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
Java 仅当网页已被修改时才下载该网页_Java_Android_Httpurlconnection_Urlconnection - Fatal编程技术网

Java 仅当网页已被修改时才下载该网页

Java 仅当网页已被修改时才下载该网页,java,android,httpurlconnection,urlconnection,Java,Android,Httpurlconnection,Urlconnection,我正在为评估构建和应用程序,只有在自上次下载后网页已被修改的情况下,我才需要下载该网页。我需要将上次更改的日期存储为Long,因此方法getDate()返回Long。 我尝试使用HttpURLConnection和URLConnection,但无法实现解决方案。 在我的尝试中,我尝试使用: ,但不知怎的,我没有收到304响应码,只有200响应码。守则: HttpURLConnection huc = null; try { URL url = new URL(pages.get(0).

我正在为评估构建和应用程序,只有在自上次下载后网页已被修改的情况下,我才需要下载该网页。我需要将上次更改的日期存储为Long,因此方法getDate()返回Long。 我尝试使用HttpURLConnection和URLConnection,但无法实现解决方案。 在我的尝试中,我尝试使用:

  • ,但不知怎的,我没有收到304响应码,只有200响应码。守则:

    HttpURLConnection huc = null;
    try {
        URL url = new URL(pages.get(0).getUrl());
        huc = (HttpURLConnection) url.openConnection();
        huc.setIfModifiedSince(pages.get(0).getDate());
        huc.connect();
        Log.d("App", "Since: " + huc.getIfModifiedSince());
        Log.d("App", "Response: " + huc.getResponseCode());
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
       //output
    since: 1354320000000 - which is the return of the getDate method.
    Response: 200
    
  • ,但我无法从响应中检索信息,因为服务器没有响应上次修改的标记


提前感谢

您是控制了服务器还是只是随意访问了互联网上的某个站点?必须将服务器配置为返回304并使用ETag。我无法控制服务器,但有没有办法在不下载hole网页并进行比较的情况下执行此操作?我使用内容的大小来查看它是否已更改。。huc.getContentLength();-huc是一个httpurl连接。