Androidアプリケーションがあり、ダウンロードした気象データの進行状況バーを表示したいと思います。私は約5か所の天気予報を表示します。問題は、レスポンスヘッダーからContent-Lengthを取得する場合です。ログには常に-1が表示されます(つまり、URLConnection変数にフィールドが設定されていないことを意味します)。GoogleWeather APIからコンテンツの長さを取得できません
これは私が使用しているコードです:
private class DownloadWeatherData extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... sUrl) {
try {
URL url = new URL("http://www.google.com/ig/api?weather=NY&hl=en&oe=utf-8");
URLConnection connection = url.openConnection();
int dataLenght = connection.getContentLength();
Log.d("ANDRO_ASYNC", "Data lenght: " + dataLenght);
InputStream input = new BufferedInputStream(url.openStream());
byte data[] = new byte[1024];
long total = 0;
int count;
while ((count = input.read(data)) != -1) {
total += count;
Log.d("ANDRO_ASYNC", ""+(int)((count)));
}
input.close();
} catch (Exception e) {
}
return null;
}
}
を私は何ができますか?または、ダウンロードしたデータの進行状況を表示する別の方法がありますか?
あなたは私のupvoteを取得@VladimirVolodinこの特定のケースでは、Googleの天気は、実際にAPIのバグを指摘するために、Content-Lengthヘッダ –
を返します。圧縮を無効にするのは良いことではありません。それはコンテンツの長さ-1を示していますか? –