我正在解析位于 Web 服务器中的 Xml 文件并将解析后的数据存储到数据库中。对于我的应用程序,我使用数据库中的数据。仅当文件被修改时我才需要解析xml文件,否则不需要解析。那么如何知道文件被修改了呢?我知道我可以使用“if-modified-since”标头。但
我需要一些“if-modified-since”标头的示例
请帮我.......
由于您是从 Web 服务器检索 .xml 文件,因此这应该相对容易,无需执行服务器端 MD5 求和。
如果您正在对 xml 文件执行 HTTP 请求,您可以简单地从 Web 服务器执行 HEAD 请求,如果文件已更改/修改或者文件不存在,则会返回该请求。这也是轻量级的,最好的部分是服务器应该已经为您完成了这项工作。
Edit: 重新看了你的问题,看来你也有同样的想法。这是代码。
import java.net.*;
import java.io.*;
// Using HTTP_NOT_MODIFIED
public static boolean Changed(String url){
try {
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
con.setRequestMethod("HEAD");
return (con.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED);
}
catch (Exception e) {
e.printStackTrace();
return false;
}
}
// GET THE LAST MODIFIED TIME
public static long LastModified(String url)
{
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
long date = con.getLastModified();
if (date == 0)
System.out.println("No last-modified information.");
else
System.out.println("Last-Modified: " + new Date(date));
return date;
}
See:
- HttpURL连接
- HyperText_Transfer_Protocol HttpStatus 304(未修改)
或者,如果您的服务器支持它们,您可以使用 ETag 来查明您的文件是否已被修改。
- http://www.xpertdeveloper.com/2011/03/last-modified-header-vs-expire-header-vs-etag/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)