网址响应时间

时间:2012-05-16 09:01:58

标签: java url time response

我正在制作一个程序,以便通过任何网址获得响应时间......

 HttpURLConnection conn = (HttpURLConnection)url.openConnection();
 for(int i=0; i<20; i++ ) {
       long starTime = System.currentTimeMillis();       
       conn.connect();

       long elasedTime = System.currentTimeMillis() - starTime;
       System.out.println(elasedTime);

       conn.disconnect();
  }

但最重要的是它给我的输出结果为0 .. plz有人帮助我! 我需要捕获从我的请求的最后一位到第一位响应的时间。

4 个答案:

答案 0 :(得分:2)

简单地打开连接根本不需要任何时间。您需要实际从URL中获取内容以获得有意义的基准。您还将url.openConnection()移动到基准测试循环的,这有点奇怪。

所以改变你的循环,以便:

  1. 在循环中移动url.openConnection()
  2. conn.getInputStream()之后添加对conn.connect()的来电。
  3. (也许)阅读InputStream的内容 - 这可能没有必要,具体取决于您要衡量的内容
  4. 最重要的是,请阅读HttpURLConnection的JavaDoc,以正确理解这些方法的真正含义。

答案 1 :(得分:1)

仅仅打开连接就没有太多的回应。

此外,由于您的连接已经打开,因此您对connect()的呼叫很可能会被忽略 - 这就是您获得0时间的原因。来自URLConnection#connect() javadoc:

  

如果在连接时调用connect方法       已经打开(由connected表示       如果字段值为true),则忽略该调用。

如果您想要实际检索回复,请抓取InputStream(调用conn.getInputStream()),然后阅读其中的所有内容。

答案 2 :(得分:0)

Java api表示在调用conn.connect()时会建立连接,但除非从连接中获取InputStream,否则不会建立连接。

connection.getInputStream()

答案 3 :(得分:0)

conn.connect()建立连接(TCP三次握手)但它没有“获取”URL上的内容。您可以使用Wireshark来验证这一点。

因此,请注意,使用此方法,您无法衡量在网址上接收内容的响应时间。