0

私は任意のURLで応答時間を取得するプログラムを作成しています...

 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になります..誰か助けてください!! リクエストの最後のビットから応答の最初のビットまでの時間をキャプチャする必要があります。

4

4 に答える 4

1

単に接続を開始しただけでは、期待できる応答はあまりありません。

さらに、接続がすでに開いているため、 への呼び出しconnect()は無視される可能性が高くなります。これが 0 時間を取得する理由です。URLConnection#connect()javadocから:

connect接続がすでに開かれているときにメソッドが呼び出された場合 (値connected を持つフィールドによって示されますtrue)、呼び出しは無視されます。

実際に応答を取得したい場合は、InputStream(call conn.getInputStream()) をフェッチしてから、その中のすべてを読み取ります。

于 2012-05-16T09:08:37.213 に答える
0

conn.connect() は接続 (TCP スリーウェイ ハンドシェイク) を確立しますが、URL のコンテンツを「GET」しません。これを確認するには、Wireshark を使用できます。

したがって、この方法では、URL でコンテンツを受信するための応答時間を測定していないことに注意してください。

于 2014-10-30T21:09:55.470 に答える