我需要一种方法来确定Internet上文件的大小。这是我的方法:
private int getSize(String url){
try {
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
//connection.setConnectTimeout(TIMEOUT);
//connection.setReadTimeout(TIMEOUT);
//connection.setRequestMethod("HEAD");
int responseCode = connection.getResponseCode();
int size = connection.getContentLength();
if(responseCode != 200){
Log.e(LOG_TAG, "Fehlercode: " + responseCode + " beim Ermitteln der Dateigroesse von " + url);
return -1;
}
return size;
} catch (IOException e) {
Log.e(LOG_TAG, "Fehler beim Ermitteln der Dateigroesse von " + url, e);
return -1;
}
}
使用Java(桌面)方法可行 - 在Android上它不起作用。 那有什么不对?
感谢您的帮助!
答案 0 :(得分:2)
使用“gzip”压缩的HttpURLConnection和服务交互(android2.2及更高版本) 你应该设置:
connection.setRequestProperty("Accept-Encoding", "identity");
参考api: 默认情况下,HttpURLConnection的此实现请求服务器使用gzip压缩。由于getContentLength()返回传输的字节数,因此您无法使用该方法来预测可从getInputStream()读取的字节数。相反,读取该流直到它耗尽:whenread()返回-1。