'Get' Java 中的 REST 调用:它什么时候真正执行?

'Get' REST Call in Java: when does it actually execute?

对于这个 'Get' REST 调用,我想知道我是否可以获得 HTTP 请求实际执行时的延迟,仅此而已。我很确定我在调用 'openConnection()' 时不会启动它,因为在那之后我没有为请求 method/property 设置属性,我目前在设置请求之前有我的 startTime method/property 但我不知道我的 HTTP 请求是否执行,直到我从输入流中获得结果。如有任何澄清,我将不胜感激。

try { 
    URL url = new URL("http://localhost:8080/REST/json/product/get");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();

    startTime = System.nanoTime();

    conn.setRequestMethod("GET");
    conn.setRequestProperty("Accept", "application/json"); 

    BufferedReader br = new BufferedReader(new InputStreamReader((connection.getInputStream())));

    endTime = System.nanoTime();
    duration = (endTime - startTime);
    System.out.println(duration);

    String output;
    System.out.println("Output from Server ...");
    while ((output = br.readLine()) != null) {
      System.out.println(output);
    } 
    conn.disconnect(); 
  } catch (MalformedURLException e) {
    e.printStackTrace();
  } catch (IOException e) {
    e.printStackTrace();
  }

我认为最好将开始时间放在调用 connection.getInputStream() 之前,只有在这条线与服务器建立实际连接之后。

startTime = System.nanoTime();
BufferedReader br = new BufferedReader(new InputStreamReader((connection.getInputStream())));    
endTime = System.nanoTime();

下面一行并没有启动连接过程,只是设置了连接的属性(方法,数据类型)

conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json"); 

更多信息:- HttpURLConnection