写真をダウンロードするアプリケーションがあり、使用している帯域幅を管理しようとしています。
使用済み:
- JDK1.7
- アパッチ HTTP クライアント
私はそれで写真をロードしています:
client = new DefaultHttpClient(cm, params);
client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, new Integer(15000));
client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, new Integer(15000));
client.getParams().setParameter(CoreConnectionPNames.TCP_NODELAY, false);
....
HttpResponse response = client.execute(httpget, new BasicHttpContext());
System.exit(0);
....
次に、HttpGet メソッドを使用して、http://www.iconki.com/icons/System/16x16-Network-and-Security/earth.png を読み込みます(例として)。
これが問題です。
この画像が 1K であることを知っているので、帯域幅の使用量は 1K + いくつかのヘッダーと余分なパケットになると予想する必要があります。ただし、コンテンツを完全に取得せず、メソッドの実行直後に終了しても、6K の帯域幅を使用しています。呼び出される HttpGet メソッドごとに常に 6K のオーバーヘッドがあるということですか? クライアントの実行でループしようとしました。
for (int i = 0; i < 10; i++)
{
httpget = new HttpGet(URL);
setMethodeHeaders(httpget);
response = client.execute(httpget, new BasicHttpContext());
httpget.abort();
Thread.sleep (1000);
System.out.println ("Looping...");
}
私は60Kの使用量を得ました。10k の画像としては非常に大きいです。コンテンツの長さを取得すると、1K の結果が得られます。6Kのものではありません。
質問は次のとおりです。
- 実際の HttpClient 帯域幅の使用状況を追跡する方法はありますか?
- このオーバーヘッドを削減する方法はありますか?