我有一个正在下载图片的应用程序,我正在尝试管理它正在使用的带宽。
用过的:
- JDK 1.7
- Apache HttpClient
我正在加载图片:
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 带宽使用情况?
- 有没有办法减少这种开销?