Java Android Http ContentLength始终为-1

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

我需要一种方法来确定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上它不工作。 怎么了


谢谢你的帮助

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