我需要从它的 URL 获取一个 txt 文件的 etag 值,该 txt 文件被上传到 Dropbox。
etag 是 txt url 的 http 标头的一部分。
如果文件非常小,比如 5-10 个字符,代码会显示 etag 值 np.
但是如果文件是 4000 个字符或更多,它会为 etag 值返回 null。这里需要帮助,我不知道为什么会这样。
这是我的代码。
public void getDatabaseEtag(){
try {
URL url = new URL("https://dl.dropboxusercontent.com/<EDITED>.txt");
HttpURLConnection.setFollowRedirects(true);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setDoOutput(false);
con.setReadTimeout(20000);
con.setRequestProperty("Connection", "keep-alive");
con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0");
((HttpURLConnection) con).setRequestMethod("HEAD");
Map<String, List<String>> map = con.getHeaderFields();
System.out.println("Printing Response Header...\n");
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
System.out.println("Key : " + entry.getKey()
+ " ,Value : " + entry.getValue());
}
System.out.println("\nGet Response Header By Key ...\n");
String etag = con.getHeaderField("ETag");
if (etag == null) {
System.out.println("Key 'ETag' is not found! in GetDatabaseEtag()");
} else {
//to string in internal storage etag
stringToTxt(etag,"data_etag.txt");
System.out.println("ETag - " + etag);
}
System.out.println("\n Done");
} catch (Exception e) {
e.printStackTrace();
}
}