如何计算Java HTTPGET带宽使用情况?

时间:2012-06-24 12:37:45

标签: java bandwidth apache-httpclient-4.x

我有一个正在下载图片的应用程序,我正在尝试管理它正在使用的带宽。

用于:

  • 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带宽使用情况?
  • 有没有办法减少这种开销?

0 个答案:

没有答案