Java Android Http ContentLength始终为-1
我需要一种方法来确定Internet上文件的大小。这是我的方法:Java Android Http ContentLength始终为-1,java,android,http,content-length,Java,Android,Http,Content Length,我需要一种方法来确定Internet上文件的大小。这是我的方法: private int getSize(String url){ try { HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); //connection.setConnectTimeout(TIMEOUT); //connection.setReadTim
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上它不工作。
怎么了
谢谢你的帮助 HttpURLConnection和使用“gzip”压缩的服务交互(android2.2及更高版本) u应设置:
connection.setRequestProperty("Accept-Encoding", "identity");
参考api:
默认情况下,此HttpURLConnection实现请求服务器使用gzip压缩。由于getContentLength()返回传输的字节数,因此无法使用该方法预测可以从getInputStream()读取多少字节。相反,读取该流直到其耗尽:whenread()返回-1 它是否随fehler一起返回?te contentLength是-1还是方法的返回值是-1?“connection.getContentLength();”是-1,responseCode是200